代码规范和重构

我的观点:

  1. 对于程序员来说,代码规范太繁琐不好,但也不能没有,规范的最低限度是公认的C#开发规范;
  2. 代码规范存在的目的应时刻铭记于心,这样程序员才能顺其自然的遵守;
  3. 规范有助于降低重构难度,而困难的重构往往会导致bug;
  4. 不断重构,不断成长;

代码维护的困局。产品不断演近和业务调整,需要程序员对代码不断维护,对于一个趋于成熟的产品而言,代码维护基本上算是程序员的主要工作。但为什么有时这项工作让我们举步维艰,bug百出呢?(代码雷区)人员的流动是原因之一,毕竟同样代码的维护人员可能不止一个,更深层次的原因则是我们写了不恰当的代码,给后来者(包括自己,比如代码是三个月前开发的)埋下了雷。这时候你心中暗骂的同时是不是期望当初有个规范约束程序员肆意书写呢?维护还得继续,是继续肆意书写代码,还是重构为将来的维护降低难度,这真的是一个问题。

为何要有规范? 程序员至少应该遵守最低限度的规范,即C#开发规范,这点毋庸置疑,它的内容包含基本的命名规范,大小写等。一般来说,能遵守C#开发规范的程序员已经可以写出比较清爽的代码了。而对于不同开发团队,规范则是团队内开发习惯和有效经验的总结,每个团队的成员都应该遵守,还记得之前提到的代码雷区吗,不恰当的代码往往都是在第一次开发的时候就埋藏下的。我们应该遵守开发规范,它为我们划定了一个范围,让我们不能越雷池一步。一个长代码的方法理解起来就很费力,重复代码以及写死的常量都有可能成为给后继者埋的雷。更深的层次,比如开发习惯与与众不同,使用了与本项目不同的代码架构(或者压根没有使用架构),这些往往会滋生出浅层的问题,从而给维护带来困难。

简明扼要是精髓。规范内容应尽可能简单明了,原因很简单,程序员不喜欢太繁琐且不实用的规范。

领会意图--自觉遵守的驱动力。强调遵守规范不如强调规范的意图。程序员应该了解规范制定的意图,并从中切实领悟到这样做带来的好处,意图就好比武功秘籍修练的心法,领悟不到其中的好处就不要奢望程序员能去自觉遵守。所谓不改初心,方能始终,对于一个成熟的程序员,规范的好处他会铭记于心,不必去强调要遵守规范,他自己会自然地遵守,因为他已经领悟到这样做的好处。

重构--有时是规范的二次执行。重构能够消除雷区,也不一定能确保不引用新的bug,对于一段需要不断维护的代码,重构是值得的。不断维护一个超长的方法,不如把这个方法重构成更加结构化的代码,比如若干意义明确的方法。最基础的重构有时候是规范的二次执行,高级的重构则伴随着程序员水平的不断提升。

代码不止是语言元素的简单组合。大家或多或少能了解遵守规范的好处,然而并不一定能够和愿意涉足重构,很多时候我们不去破解代码维护的困局,而是继续在这困局中挣扎,或许是不得已,或许是不愿意去触碰那可能的雷区,这就丢失了好多成长的好机会,每一次的重构都能促使我们反思:什么样的代码才是好代码?对于程序员来说,这个问题很有意义不是吗。

时间: 2024-10-07 12:56:15

代码规范和重构的相关文章

软件工程第二周作业:代码规范和代码复审

0x01 :代码规划的要求 Q:这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西.(反驳) 首先,我们需要明确编码规范的定义,编码规范同时包括了编码风格和其它规范(代码设计上的规范,如设计模式.程序设计.模块之间的逻辑关联等). 编码风格,牵扯到“缩进.空格使用.注释.命名习惯”等多方面的因素,是依致特定编程语言制定的软件工程开发的“约定”,而相同的编码风格,可以使得软件开发过程中轻松浏览任意一段代码,充分保证不同的开发人员能够依据统一的编码格式轻松理解代码的逻

iOS代码规范

前言 开发iOS至今已经有一年多的时间了,一直没有对代码做一个比较好的规范,最近公司人手逐渐增多,每个人写的代码都是无花八门,看着十分不习惯.于是综合网上一些人的经验和自己的一些编程习惯,总结出了如下的iOS代码规范. 命名规范 类命名 首字母大写,之后每个单词首字母都大写 使用能够反映类功能的名词短语 文件和类同名 特殊类命名 如果是视图控制器的子类应添加后缀"ViewController"或者"Controller",BeeFramwork中加"Boa

10、前端代码规范(转载)

本文系转载,原文链接:http://alloyteam.github.io/CodeGuide/? Code Guide by @AlloyTeam Standards for developing flexible, durable, and sustainable HTML and CSS, and maintainable JavaScript 通过分析github代码库总结出来的工程师代码书写习惯:GO!!! 目录 命名规则 项目命名 目录命名 JS文件命名 CSS, SCSS文件命名

构建iOS稳定应用架构时方案选择的思考,主要涉及工程结构,数据流思想和代码规范

工程结构架构,减少耦合混乱以及防治需求大改造成结构重构 我打算采用Information flow的方式自上而下,两大层分为基础层和展现层的结构.基础层分为多层,展现层也可分为多层.主要思想是将基础层的最下一层当做零部件,将业务层最下 层当做组装大部件,通过流程串起来形成一个完整的产品,做零件时按照做出一个就扔进对应基础层的篮子里思路来,目录结构也可以按照这种来进行.这两大层的 最下层按照零件拆得越小越容易应对需求变化越容易保护巩固上层的思路来就好.拿微信这个大家都熟悉的产品的几个功能来简单示例

Web 前端代码规范

Web 前端代码规范 最后更新时间:2017-06-25 原始文章链接:https://github.com/bxm0927/web-code-standards 此项目用于记录规范的.高可维护性的前端代码,这是通过分析 Github 众多前端代码库,总结出来的前端代码书写规范. 目录 前端普适性规范 HTML 规范 CSS 规范 JS 规范 License public domain, Just take it. Thanks @Ruan YiFeng: https://github.com/

(转)ios 代码规范

转自http://blog.csdn.net/pjk1129/article/details/45146955 引子 在看下面之前,大家自我检测一下自己写的代码是否规范,代码风格是否过于迥异阅读困难?可以相互阅读同伴的代码,是否存在阅读障碍? 若存在晦涩难懂的,理解成本增大的代码,说明你的团队需要自省了. 下面总结一下OC编程中的一些代码规范(苹果官方推荐的).以OC为示例,但不局限于OC,也可以被当作别的编程语言的开发规范约定(仅需要把OC特有的东西按照你所使用的语言的惯例即可) 参考资料:苹

解读阿里官方代码规范

2017年开春,阿里对外公布了「阿里巴巴Java开发手册」.作为一个13年经验的码农,从头到尾浏览了一遍这份手册之后,感觉很棒.虽然其中的某些观点笔者不能苟同,但大部分的规范还是值得绝大多数程序员学习和遵守的. 笔者将对这份代码规范中的一些细节做一些解读,包含笔者的观点和想法,可以作为这份代码规范的扩展阅读.对于规范中某些「显而易见」的条款,将不在解读范围之列(换言之,这都不懂,就说明你天赋不够,乘早别做程序员了). 当然,笔者在日常的编程过程中属于「代码洁癖偏执狂」,所以文中的某些观点仅代表个

iOS学习:iOS代码规范

作者感言 阅读前言 iOS代码规范 Import规范 Define规范 Paragma Mark 规范 Interface规范 implementation规范 实例规范 NSDictionary规范 NSArray规范 函数规范 If-Else规范 For-In For 规范 Block规范 运算符规范 命名规范 实例命名规范 Property命名规范 Interface-class命名规范 Define命名规范 Block命名规范 For-In命名规范 布局框架 文件夹层次结构 MVC架构

C#零基础入门08:代码规范

一:前言 没有规矩,不成方圆.在代码的世界中,尤其这样.作为程序员,我们不想让我们的代码写出去之后被人耻笑:看,连个换行都换的这么不专业.作为开发主管,我们则不想我们的组员写出来的代码各类风格都有,五颜六色的,极其丑陋.写出规范的代码,首先需要训练,其次,也有一定的手段或者工具来进行辅助.本小节,我们就要从这两方面入手,讲讲如何规范我们的代码.当然,由于我们现在学到的编码知识还有限,最为规范来讲,本小节也将仅仅会设计那些最基本,最常用的编码的规范,但是即便如此,学完本小节之后,也会让我们的代码看