`
lvwenwen
  • 浏览: 958461 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

写代码之前要做什么?

阅读更多

 在想到这个问题的时候,很多童鞋都会笃定回答:我会先构思程序大体的框架,接着就开始写代码。

A:难道你就不将你的构思巨细文档下?

B:一般的编程任务不会太难的话,我觉得YY也很可靠,可能更高效。

A:为什么这么急的写代码?

B:手痒~~

先小说下YY。YY即意淫,这里意即写代码时,不草稿不文档,脑瓜里天马行空,心猿意马。

我不确定是不是大多数的Coder都这么做?!但我周遭的许多同学确实是这么说的做的。首先,很可能是程序猿对自己的YY思维太过自信,再者就是急功近利——想要一睹自己在写完代码后『F7』+『Ctrl+F5』(注:VS2008 C++的生成解决方案和运行的快捷键,笔者经常在写完代码后,习惯这样快速运行)的运行结果和预期的一样。基于这种心态,我们越想去劈劈拍拍敲代码。

在这学期,我们课程安排里有软件工程这一门,说的就是软件从无到有的一个过程,其间包括提出问题,需求分析,详细设计,软甲架构,编码测试,接着可能就是RTM。但是,笔者似乎对软件工程这门课程很有偏见,以为跟我的感觉,它太过教条化,与自己先前写代码的方式违背。先说说教材,我们学校选的是《软件工程导论》XXX版,随口问了身旁的一位小哥,对这本书什么评价,答曰:“不好!”问为什么还拿来当教材?答曰:“上面印着XXXX精品教材。”笔者想不明白,为什么一本在自由书市无人问津的书籍,还会出第N版(读重音),还在各高校这么有市场。存在即合理~~呵呵。。。

在前几天,开始看《代码大全了》,含金量对得起它的厚度。而它的讲解真教人拍手称快。这样的书才能被奉为“机经”,被程序猿收藏于案头架上。当然,代码大全并不是完整的讲述软件工程,毕竟它只在软件架构部分“事无巨细”。而想要完整讲述软件工程这一学科,它的每一个阶段都可以是一本或几本书。

扯的有点远了。任务越是庞杂的时候,零零碎碎的问题就越来越多,而且缺乏『高层设计』和『底层设计』的迭代设计过程,这些问题会越来越凸显,而且一盘散沙,眼花缭乱,于是很可能前功尽弃,重头再来一遍,又或者破罐子破摔。思维空间似一张草稿,范围有限,不容的我们天马行空,欲在狭小的范围描述一个庞杂的系统,显得有些吃力,这时候文档就越发重要了。如果不以为然,要么恭喜你,你是天才架构师;要么XX你,项目经验太少。当有项目经验过后,会发现『YY』显得苍白无力。

童鞋们可能牢骚:这些烂大街老掉牙的东西!是啊,明白这些的人太多了,笔者是其中之一,可忍耐非常脆弱,不费吹灰便可被『噼噼啪啪敲键盘』的欲望击垮。所以,如果读者这么不幸与读者有类似的经历的话,当下要做的就是『禁欲』

不是每个人天生都是天才架构师,都能鸟瞰软件系统,一来就『噼噼啪啪』干起来。也许这一次的设计不是那么的完美,但如上所提到的,『高层设计』和『底层设计』的迭代设计的过程会让你不断的发现其中的瑕疵,完善整个系统。好吧,再退一步讲,即便经过设计的系统还是很不合理的系统,那你也能很快体验到设计后『奋笔疾书』敲代码的快感,关键是意识到这问题的时候,学习才能提高了。

一个设计合理与否的系统很快会自己给出答案。一个显而易见的方法是,当需要更改的时候,系统需要在多大的程度上被修改。这里提一个蹩脚的比喻:

程序猿==医生,

客户有问题需要解决,过来找你。你是医生,他是患者。

你要经过望闻问切,找到患者的病因(需求分析)

针对病因,找到适合的治疗方案(合适的技术)

而当医生宣布你已经无药可救的时候,很明显系统有问题。

学计算机的,对IT稍有些狂热的人,都会突发奇想做自己的应用,而且这种想法经常有,注重软件设计的机会,将大有裨益。阅读《代码大全了》那会,一个很有趣的地方:说要把界面和数据逻辑分开,而『更换界面的需求(譬如将可视化变为较为容易测试的console)』能回答界面和数据逻辑分开与否。这一提示能够让我们日后在设计的时候时刻提高警惕——如果真的有需求要将可视化界面更换为console,数据层和业务逻辑层能否不动声色。

最后,『真的程序员,敢于直面惨淡的重构,敢于正视淋漓的需求。』,这句话某中意义上是YY高手不思进取,对现实世界的妥协。别急着『噼噼啪啪』,设计下,文档下,或许不至于惨淡。

笔者没有软件工程系统的学习经验,上述文字自己的所感所想,欢迎斧正。

本文完 2012-11-18

捣乱小子 http://www.daoluan.net/

分享到:
评论

相关推荐

    29丨理论三:什么是代码的可测试性?如何写出可测试性好的代码?1

    10. **测试驱动开发(TDD)**:在编写实际代码之前先编写测试,确保代码从一开始就考虑到了测试需求。 【常见的不好测试的代码】: 1. **使用静态方法或单例**:静态方法和单例很难替换或模拟,导致测试困难。 2. **...

    手写板程序代码

    6. 绘写通功能,可以写字、绘画; 7. 软件界面、功能简洁明了,易学易用,极易上手,尤其适合不熟悉电脑的用户。 8. 识别:①中文简体②中文繁体③日文④韩文⑤英文⑥数字; 9. 支持连续书写。 三、应用环境: 1. ...

    提高写代码得效率(编程篇)

    提高写代码的效率(编程篇) 在编程领域中,提高写代码的效率是每个程序员必须面对的挑战。本文将总结如何提高代码的书写效率和练习方法。通过分析常见的编程错误和解决方法,我们可以总结出两大关键点:养成好的...

    如何将网页特效代码插入到网页中?_帮助文档_网页特效库.files

    可以使用`window.onload`或`DOMContentLoaded`事件确保在执行代码前页面已准备好。 ```javascript window.addEventListener('DOMContentLoaded', function() { // 在这里执行特效代码 }); ``` 7. **浏览器...

    Java写代码规范

    为了确保代码的可读性、可维护性和团队协作效率,遵循一套统一的代码规范显得至关重要。以下是对Java编写代码规范的详细解读: 1. **命名规范** - 类名:采用大驼峰命名法(每个单词首字母大写),如`ClassName`。...

    07丨链表(下):如何轻松写出正确的链表代码?1

    【实践与技巧】写好链表代码需要时间和大量实践。投入时间反复练习,直到能够熟练编写无错误的代码,是提高技能的关键。同时,掌握以上提到的指针理解、避免指针丢失和使用哨兵节点的技巧,也能帮助我们更轻松地处理...

    链表(下):如何轻松写出正确的链表代码?.pdf

    在深入探讨如何轻松编写链表代码之前,让我们先简单回顾一下链表的基础知识。链表是一种线性数据结构,由一系列节点组成,每个节点包含两个部分:数据和指向下一个节点的指针。链表因其动态存储性质而在实际应用中...

    读者写者问题java 代码

    在这里,我们将深入探讨Java中解决读者写者问题的策略,并分析提供的代码可能存在的一些问题。 读者写者问题的核心在于:读者不互斥,可以同时读取数据;但当有写者在写入数据时,必须独占资源,即不允许任何读者或...

    写好代码的十个秘诀_微软中国研究院

    **写好代码的十个秘诀** 在编程领域,代码质量至关重要,因为它直接影响到软件的可读性、可维护性以及性能。微软中国研究院分享了“写好代码的十个秘诀”,旨在帮助开发者提升编码技能,实现更高效、更优雅的编程。...

    Python3.x+Pyqt5实现界面和逻辑分离案例01_自己写的,有UI界面源代码(更正之前的错误代码)

    Python3.x+Pyqt5实现界面和逻辑分离案例01_自己写的,有UI界面源代码(更正之前的错误代码)。

    PETiger代码乱序混淆工具

    -PETiger是什么? 是一款快速代码混淆工具,中间层加密,也就是说在使用PETiger之前可以进行加密 压缩,然后再使用PETiger加密保护...把自己写入的DLL代码加入到要保护的文件中,可以自己写反调试代码,或者完善功能。

    USACO大牛写的前三十个的代码

    【USACO大牛写的前三十个的代码】这个资源是一个集合,包含了由USACO(美国计算机奥林匹克)竞赛中表现出色的程序员编写的前30个代码实例。这些代码是针对初学者设计的,旨在帮助那些正在探索数据结构基础知识的人。...

    《写给程序员的数据挖掘实践指南》源代码

    《写给程序员的数据挖掘实践指南》源代码是一个与大数据相关的学习资源,主要针对希望深入了解数据挖掘技术的程序员。数据挖掘是大数据分析的核心部分,它通过使用各种算法和技术从大量数据中提取有价值的信息和知识...

    我的个人代码收藏(更新)

    【标题】"我的个人代码收藏(更新)"指的是一个个人收集的代码库,其中包含了作者在.NET框架下使用C#编程语言编写的代码片段或项目。这个更新版本着重解决了之前版本中存在的问题,以提高用户体验和实用性。 【描述...

    idea中git更新代码到本地之后自己写的代码不见了.docx

    在处理“idea中git更新代码到本地之后自己写的代码不见了”的问题时,首先需要理解Git的基本操作和IntelliJ IDEA中的Git设置。 Git是一种分布式版本控制系统,用于跟踪对文件和目录的修改。在IntelliJ IDEA中,Git...

    WEB CAD中二次开发绘制任意线功能代码如何写?

    同时,为了避免出现不必要的重叠和绘制异常,可以在每次绘制前清空 Canvas 画布。 实现网页 CAD 绘制任意线的基本思路和代码要根据实际需求进行修改和扩展,比如增加颜色、宽度等属性选择,或者支持多种绘图模式(如...

    自己动手写神经网络_源代码

    《自己动手写神经网络》是一本面向实践的书籍,旨在帮助读者深入理解神经网络的工作原理,并通过编写源代码实现自己的神经网络模型。源代码包含了多个关键的文件和目录,如`plot_func.sce`用于绘制函数图形,`...

    每天写出好代码的5个建议

    ### 每天写出好代码的5个建议 在软件开发领域,编写高质量的代码是每个程序员追求的目标。良好的代码不仅能够提高程序的稳定性和可维护性,还能够提升团队的协作效率。以下是从给定文件中提炼出的五个关于如何每天...

    自己编写的测试代码

    TDD要求在编写功能代码前写好测试用例,而BDD更注重从用户角度定义系统的预期行为,通过Gherkin语法编写故事或场景。 7. 测试覆盖率:衡量测试充分性的指标,表示被测试代码中有多少比例被测试用例执行过。虽然高...

Global site tag (gtag.js) - Google Analytics