游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

代码整洁之道读后感

  大一学C语言时,我最不喜欢的事情之一就是帮其他同学调代码。如果只是不知道怎么实现一个功能倒还好说,但往往面临的情况是,知道程序运行的结果错了,不知道代码错在哪。不论是调试还是printf,至少要知道代码可能错在哪才好下手,这就到了最考验人耐心的时候了看代码。
  我们写的代码可谓是千人千面,我看别人的代码,仿佛是武汉人在听湖南人讲湖南话明明说的都是中国话,怎么听不太懂呢;明明都是C语言,怎么看不太明白呢。如果大家都是一样的编程风格,我想问题应该能得到解决。当然,对于刚学C语言的我们来说,这只是一个美好的幻想这个时候大部分同学应该还在为程序中各种各样的bug抓耳挠腮,无暇顾及自己编的代码是不是赏心悦目。
  但问题一直存在,终究需要我们去解决,尤其是到了跳出一百来行代码的舒适圈,面对一个工程的时候。
  老师在教我们汇编的时候就提到了这本书,然后我就把它下载下来,然后,就没有然后了。这恰好验证了书中提到的勒布朗法则:稍后等于永不(Laterequalsnever)。
  这本书指出了很多程序员写代码时的通病,大大小小的问题使我们的代码看起来不够整洁,降低了代码的可读性读书的时候我常常会想,这不就是说的我吗。
  作者提到,写新代码时,我们一直在读旧代码,读与写花费时间的比例超过10:1。因此,为了节约我们和团队成员的时间,同时使编程的体验变得愉悦,写出整洁的代码是一个负责、优秀的程序员理应做到的。虽然这本书我大概只看了个皮毛,很多规范还需要通过实践来练习,但是从中也能领会到作者的一些想法了。下面就其中几点谈一谈我的收获:
  一关于命名
  命名要名副其实,即,读者可以不通过另外的注释来了解这个变量函数要做什么或者用来做什么。
  命名要避免误导。比如:尽量不要用一些人们熟知的命名来承载我们创造的新意义;名字之间的差距要一目了然,避免阅读代码时还要浪费时间在找不同上;尽量避免用小写字母l和大写字母O作为变量名,因为它们看起来像是数字1和0
  命名时要做有意义的区分。避免a1、a2aN式命名(我大一时偶尔会这样偷懒命名),这样的命名没有任何有用信息。
  使用读得出来的名称。我记得老师上课时也提到过这一点,命名时要使用恰当的英语单词,而非意义不明的自造词。
  使用可搜索的名称。这一点在我这段时间调程序的时候就有体会。单字母名称和数字常量很难在大段代码中找出来,它可能是某些文件名或其他常量定义的一部分,出现在因不同意图而采用的各种表达式中。名称长短应与其作用域大小相对应,单字母名称仅用于短方法中的本地变量,比如我们常常用i、j来表示循环结构中的计数变量。若变量或常量可能在代码中多处使用,则应赋其以便于搜索的名称。但只要短名称足够清楚,就要比长名称好。
  二关于函数
  作者认为,好的函数应该有下面这些特点:
  短小。短小的标准是:每个函数都一目了然。每个函数都只说一件事。而且,每个函数都依序把你带到下一个函数。
  只做一件事。函数应该做一件事,做好这件事,只做这一件事。但作者同时也完全说出我的内心想法:问题在于很难知道那件该做的事是什么。要判断函数是否不止做了一件事,还有一个方法,就是看是否能再拆出一个函数,该函数不仅只是单纯地重新诠释其实现。只做一件事的函数无法被合理地切分为多个区段。
  每个函数一个抽象层级。我们期望能够按照顺序阅读程序,而不是跳来跳去。这就要求每个函数后面都跟着位于下一抽象层级的函数,即被调用的函数应该放在执行调用的函数下面。
  函数的形参要尽量少。这样既能减少阅读代码时细节上的负担,也能减少测试时可能带来的麻烦。
  避免不同函数中反复出现相同的算法。重复的算法不仅使代码看起来臃肿,而且当算法改变时还增加了修改的难度需要修改的地方越多,发生二次错误的可能性越大。
  我感觉写出好的函数可能是我谈到的这几点里面最困难的一部分了。写出好函数难以一步到位,需要我们反复打磨。
  三关于注释
  在作者看来,若编程语言足够有表达力,或者我们长于用这些语言来表达意图,就不那么需要注释也许根本不需要。因为很多程序员不能坚持维护注释,注释存在的时间越久,就离其所描述的代码越远,越来越变得全然错误。所以,尽管有时也需要注释,我们也该多花心思尽量减少注释量。带有少量注释的整洁而有表达力的代码,要比带有大量注释的零碎而复杂的代码像样得多。与其花时间编写解释你搞出的糟糕的代码的注释,不如花时间清洁那堆糟糕的代码。简而言之,就是好的代码才是主体,注释的作用应是锦上添花。
  坏的注释包括程序员的喃喃自语、多余的注释、误导性注释、日志式注释和废话注释等。
  好的注释可以提供基本信息、提供某个决定后面的意图、把某些晦涩难明的参数或返回值的意义翻译为某种可读形式和用于警告其他程序员会出现某种后果等。
  另外,作者写到,有时可以用TODO形式在源代码中放置要做的工作列表,TODO是一种程序员认为应该做,但由于某些原因目前还没做的工作。但我想这句话的意思并不是要为拖延症患者找理由毕竟前面刚提到Laterequalsnever,更多的是一种规划。
  作者还提到,直接把代码注释掉是讨厌的做法。其他人不敢删除注释掉的代码。他们会想,代码依然放在那儿,一定有其原因,而且这段代码很重要,不能删除。而我们在调试阶段常常会这么做,因为不确定这段代码之后是否还会用到,但我想最终发布的产品中是不应该出现这样误导他人的代码的。
  四关于格式
  学C语言的时候,陈朔鹰老师就和我们强调过代码格式的重要性虽然最后我好像就记住了要缩进,但什么时候需要缩进,我的回答大概是跟着感觉走。
  好的代码格式应该是这样的:
  垂直格式方面,通过空白行隔开独立概念,通过靠近的代码行表示紧密关系。另外,应该建立一种自顶向下贯穿源代码模块的良好信息流,即像函数部分提到的那样,被调用的函数应该放在执行调用的函数下面。
  横向格式方面,应该尽力保持代码行短小,每行代码不应该超过120个字符。同时要合理运用空格符。比如,在赋值操作符周围加上空格字符,以此达到强调目的;不在函数名和左圆括号之间加空格,因为函数与其参数密切相关
  关于为什么需要缩进格式,作者提到:源文件是一种继承结构,而不是一种大纲结构。其中的信息涉及整个文件、文件中每个类、类中的方法、方法中的代码块,也涉及代码块中的代码块。这种继承结构中的每一层级都圈出一个范围,名称可以在其中声明,而声明和执行语句也可以在其中解释。要让这种范围式继承结构可见,我们依源代码行在继承结构中的位置对源代码行做缩进处理。程序员相当依赖这种缩进模式。他们从代码行左边査看自己在什么范围中工作。这让他们能快速跳过与当前关注的情形无关的范围,例如if或while语句的实现之类。他们的眼光扫过左边,査找新的方法声明、新变量,甚至新类。没有缩进的话,程序就会变得无法阅读。
  另外,好的软件系统是由一系列读起来不错的代码文件组成的,它们需要拥有一致和顺畅的风格。即,团队任务需要制定相应的团队规则,虽然实现起来有些难度因为每个人都有自己的个人特点和习惯,但确实是很有必要且长远来看是能大幅提高效率的。
  纸上得来终觉浅,绝知此事要躬行。书看了,更多的东西还是要付诸实践才能体会。

空间个性超拽短句有脸做好你的人没脸闭好你的嘴一、不吃饭的女人这世上也许还有好几个,不吃醋的女人却连一个也没有。二、王者也有倒下的一刻,只是他倒下的地方,充满了荣耀与辉煌三、你听过的第一个3D环绕音乐是什么?,……大纲造句用大纲造句大全121短篇,算是残稿,本来想把它写成诡异风格的侦破,可惜实在是没有时间和精力,结果就出现这么个半成品,最多算是个不完整的大纲,发给大家看看好了。122在那天黄昏长谈之后,……天秤男对前女友的态度和平相处老死不相往来天秤男对前女友的态度:普通朋友对于天秤座这么一个追求风范的星座,对于前任的感觉就是偶尔我还是回想起他,但是心中早已没有火花。对于自己的社交能力非常有自信的天秤座也非常相信……小麦黑穗病有哪些防治方法小麦黑穗病当寄主牙鞘长12厘米,温度20左右时,最适宜病菌侵入;芽鞘达4厘米,病菌即难以侵染。由于秆黑粉菌侵染寄主后,仅能在薄壁细胞间蔓延,所以在叶、叶鞘,茎秆上能形成与叶脉平……颇不造句用颇不造句大全31李自成听各式各样马屁听得多了,这种谀辞听起来毫无反感,反而觉得一日不听便颇不舒服。32自然,先进的、觉悟的人民激于义愤,不甘缄默,向人民政府揭发匪特窃盗的罪行,因而使……历史秦桧莫须有一语究竟是何含义岳飞之死是早有结论的冤案,然而加给他的罪名莫须有这三个字的含义,却成了千古疑案。《宋史岳飞传》:狱之将上也,韩世忠不平,诣桧诘其实。桧曰:飞子云与张宪书虽不明,其事体莫须……老人吃苹果好吗苹果是秋冬季节的常见水果,它虽普通但是却营养丰富和拥有良好的保健功效,很多人都喜欢它。那么,老人吃苹果好吗?小编今天就来介绍一下这方面的知识。看似最普通的苹果,却有着诸多……开车被雷劈能不能下车打雷躲车里安全吗开车遇上雨、雪、雾、冰雹等不正常的天气是很正常的事情,如果遇上打雷更是会让人心里一紧,虽然行车中被雷击中的可能性不高,但并不是不会发生。那么如果开车被雷劈了是要下车呢还是就躲在……推荐款气质长发发型夏季郊游的最美发型第一款是青春活力十足的女生长直发发型,空气感十足的刘海,加上中分的发型设计,很是具有浪漫女神的感觉,是不是已经被迷倒了呢?时尚的女生发型的标志是什么呢?偏分就是最大的标志……睡前泡脚的好处多个事项要注意睡前洗脚好处多,即可助眠又可以强身健体,缓解人一天的疲劳,脚是人体的第二心脏,保养好自己的脚可以驱除疾病,健康一生,建议每天都要泡一下脚。改善睡眠足部有丰富的神经末……级景区旅游档案管理存在的问题及对策【摘要】2006年我国启动了国家5A级旅游景区的评定工作,5A级是旅游景区的最高级别,是提高景区核心竞争力的最有效的途径。本文主要从5A级景区旅游档案管理的重要凭证作用出发,分……我和妈妈的故事我的妈妈是一个普普通通的人。从相貌,身材上讲,只能用一般二字来形容。但在我心中,我的妈妈是最美丽的人。妈妈很爱我,那刻骨铭心的往事像用线串起来的珍珠一样,充满了芬芳。记得……
老年人食用大豆有哪些益处大豆丰富的营养价值是老年人挑选食物时不能错过的,随着年龄的增长,各项技能开始退回,身体也大不如前,这时候老年人在饮食上也需要特别的注意,多吃含维生素和蛋白质高的食物。比如大豆,……学院办行政科个人总结尊敬的院长、各位领导、同事们,大家好:2015年2月27日,我调至院办行政科,而今2015年的工作即将告一段落,回顾一年来的思想,工作和学习情况,在学院各级领导和各部门同……图吉利美人豹怎么样难道只有奇葩的造型吗吉利美人豹的的外形由意大利设计公司操刀,前前后后都能看见诸多模仿的影子。造型酷似丰田早期推出的一款跑车,前俯后翘,尾灯采用了时下流行的联体晶钻式大灯。相信有很多人在看过许……德育工作案例养成良好的生活习惯不可成教育工作的一个重要内容是德育工作。从教多年,切身体会到德育工作对学生的深刻影响,现就工作中的经历解析如下。一、案例背景叙述新一届职高生,走进校园,军训开始了。很多家……图风水罗盘详解及使用方法放在什么位置效果更好风水罗盘是风水中用来化煞、镇宅、招财的利器,当我们把它摆放在家里时,一定要注意一些摆放讲究,这对家宅的兴旺有很大影响,下面就让我们来了解一下吧。罗盘是风水师的重要工具,甚……2个月宝宝一觉睡多久了解育儿知识陪伴孩子健康成长宝宝的诞生是一个家庭中的大喜事,对于新手的父母来说,他们不愿意错过任何一个孩子成长的过程,两个月的宝宝如何鉴定身体是否健康,我们可以通过他睡眠时间长短来判断。一个家庭是不……图大众江淮新款年底上市首款电动汽车真的靠谱吗大众汽车集团与安徽江淮汽车集团股份有限公司宣布成立合资企业,将于年底生产一辆首款电动suv。这次行为是真的在做电动汽车,还是为了搏一个噱头。提起大众江淮这个品牌,很多人都……人体十二经络分布是怎样的作用与功效有哪些众所周知,人体全身分布有很多经络,不同的经络按摩就能够改善不同的病症,让人们内心的压力得到缓解,也不会经常出现身体酸痛的问题,让人们的生活质量得到明显提高。来源:图虫作者……图掌纹会变化吗带你走进神秘大门掌纹就是指手掌上的纹线。手掌纹线是由粗的线和细的纹组成,线是在母体中先天生成的,不易改变,它反映身体先天的状况。纹多是后天的,因外界因素因素造成,容易改变。掌纹一般来说是……人生的无奈的伤感说说一、两个人同时犯了错,站出来承担的那一方叫宽容,另一方欠下的债,早晚都要还。二、我们总以为来日方长,一不小心就后会无期。三、你若不是可有可无,他又怎会忽冷忽热。……六招应对假后社交时差综合症十一长假过了,白领们,节后时差你倒过来了吗?什么是节后社交时差综合症呢?有没有清晨不愿离开热被窝,起床后感到疲倦,夜晚入睡很困难,白天却无精神这样的症状呢?那么,有什么方法可以……子宫肌瘤患者怀孕存在风险子宫肌瘤是育龄妇女多发的良性肿瘤。杭州和睦医院微创妇科费旭红医师说,尽管有少数孕妇患子宫肌瘤后仍可顺利妊娠分娩,但其风险也是相当大的,建议育龄妇女在孕前最好做一次妇科检查。……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网