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

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/

写代码之前要做什么?相关推荐

  1. 【杂谈】提升写代码效率不得不做的三件事

    想成为一个优秀的AI算法工程师必须要熟练使用Linux,这是学习AI的一个基础,如果你一直还在用Windows,那就很low了.本文我们聊聊提升写代码效率不得不做的三件事. 作者&编辑 | 汤 ...

  2. 写代码之前应该做的几件事

    作者:borisyang,腾讯 WXG 应用开发工程师 作为程序员,刚刚开始学会写代码,常常是接过需求就开始撸代码.有时候发现,写完代码,需求变了.更多时候,觉得写业务代码枯燥无聊,没有技术含量.另外 ...

  3. ms查约束具体代码_程序员写代码之前应该做的5件事,看完编程效率瞬间提升

    作者:borisyang,腾讯 WXG 应用开发工程师 作为程序员,刚刚开始学会写代码,常常是接过需求就开始撸代码.有时候发现,写完代码,需求变了.更多时候,觉得写业务代码枯燥无聊,没有技术含量.另外 ...

  4. 那些不用写代码也能做游戏的工具

    本文首发于微信公众号:小蚂蚁教你做游戏.欢迎关注领取更多学习做游戏的原创教程资料,每天学点儿游戏开发知识. 嗨!大家好,我是小蚂蚁. "我不会写代码,还能做游戏吗?"不少想做游戏的 ...

  5. 技术专家写代码-以点带面谈做开发

    静儿历时8个月终于如愿回归写代码的生活.希望这8个月的成长能对自己的码砖起到一定的指导意义.下面就介绍一下静儿回归后的第一次码砖经历. 以下是静儿的方案设计: 01 - 方案设计 背景: DNS绑定会 ...

  6. 不用写代码就能做高端科学计算,Mathematica推出“人话”版软件

    晓查 发自 凹非寺 量子位 出品 | 公众号 QbitAI 著名科技计算软件公司Wolfram推出了自然语言版Wolfram Alpha Notebook Edition,通俗来说,这就是一个可以和它 ...

  7. 学会这款自动化测试神器,不会写代码也能做

    前 言 做自动化测试肯定要了解就是 DDT 数据驱动测试,这样做的好处就是可以通过一组或多组数据进行灵活的测试,而不需要硬编码. 那今天我们就来讲解一下 Katalon 怎么进行测试数据读取的. Ka ...

  8. 0代码就能做Python数据分析,这个Jupyter插件,用起来就像Excel一样简单

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 加载一个Jupyter插件后,无需写代码就能做数据分析,还帮你生成相应代码? 没错,只需要加载这个名为Mito的小工具包,用Python做数 ...

  9. 35岁之后,你还会继续写代码吗?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 前段时间,阿里CEO张勇,发表了一个论调,引起多方关注, ...

最新文章

  1. 阻塞队列(1)--ArrayBlockingQueue底层实现
  2. VTK:绘制截锥体用法实战
  3. 2020/5/13号单词
  4. php oci8 11,linux下为php开启oci8扩展(ubuntu14亲测可用)
  5. Linux 迎来 29 岁:从个人爱好到统治世界的操作系统内核
  6. 【算法】并查集(Java)
  7. 亚马逊美国站审核便携式火炉逊、户外烧烤架ASTM F3363测试项目
  8. oracle用户LOCKED(TIMED)原因及解决
  9. 怎么安装google nik collection 1.2.11.win插件
  10. [prolog 基础系列] Prolog 的使用以及 Knowledge Base
  11. wpf/sl下的复合程序-CAG入门
  12. mysql备份与恢复方案_MYSQL备份与恢复
  13. 一款炫丽的网页播放器插件
  14. matlab批量处理excel(CSV)文件数据
  15. 一个大学生的心灵告白:世界上最后一封情书
  16. 上云节省 35%计算资源,420 个运维人天:运满满实时计算实践和思考
  17. 平面设计素材免费下载,无套路
  18. 第144章 SQL函数 TO_DATE(二)
  19. 2015淘宝最新排名新规则
  20. Qt实现录音机(整理他人的博客)

热门文章

  1. idea中设置jdk
  2. 重磅!在 Mac 上接收 iphone 手机短信!
  3. 35岁程序员被公司辞退,生活压力太大痛哭,中年危机如何自救?
  4. 对js原型对象的理解
  5. NHibernate Mapping Attribute实现复合主键映射
  6. MySQL 数据库文件 详解
  7. 关于访问接口时前后端都报错:404 (Not Found)
  8. Oracle 循环插入数据
  9. OpenNI的安装与开发环境配置
  10. 跌才是机会,涨才是风险