论坛首页 入门技术论坛

什么是好的代码??---一点感想

浏览 8563 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-06-26   最后修改:2010-06-27

什么是好的代码? 以下是我的一点感想,可能回答不完整,欢迎大家补充。

 

好的代码一定要有好的设计和规范来保证。仅以此篇来与项目组的同事们达成共识,在编程实现中考虑这些问题,并在代码检查中贯彻下去,这才是真正的目的。

 

这些条条框框大家说起来可能都懂,但是不是将这种思想真正的印记在脑子里,贯彻在行动上,产出的代码是不是能成为好的代码,这是一个素养问题,与程序员平时的

 

积累、思考有关。

 

(1)代码粒度合适

 

 每个类包含的方法合适,每个方法包含的代码量合适,而非满屏一个方法。切实的方法是对大的方法类,有一定的敏感性,书写短小精悍的代码。怎么创建粒度合适的代码呢?设计类从领域模型入手,设计方法考虑尽量考虑你的代码意图,小的意图产出小的方法,也可以规定一个方法不要超过一定行。

 

(2)高内聚,松耦合

 

这与(1)有些类似,但是只是粒度合适不一定就满足高内聚松耦合,这就要求从设计的高度,从业务的角度进行系统分析。可以采用测试驱动设计的思想,从是否能够单独单元测试来考虑是否可以将模块间的代码解耦。另外,如果方法过大,这个类就承担了过多的职责,一定不是高内聚的,违反单一职责原则。

 

 

(3)有一定的扩展性、灵活性

可以采用设计模式,解决这个问题,也可以从设计产品的角度,考虑如果是下个项目这部分代码能否以更小的修改代价进行。

 

(4)意图清晰

好的代码从命名开始。设计一个类命名需要清晰表达你的意图,采用设计模式需要清晰表达你的模式名称,比如***Strategy,不要写一些没有业务逻辑含义的命名,或者是太具有泛化、模糊含义的名称,或者是程序员语言的代码,比如getColumnModel,这在ext grid中命名是可以的,但是如果写在企业级应用的系统中,没有人能读懂到底要干什么。

 

(5)统一的规范

除了代码命名规范外,还有系统设计、处理的规范,比如异常处理的规范,是checkedexception还是checkedexception,异常在那一层处理,如何处理依赖?

如何处理事务,在哪一层处理事务?action层不要包括太多的业务逻辑,什么是代码坏味道。

 

前3项都是由好的设计来保证的,可见我们的设计直接影响了我们的代码质量,设计大多是由设计师或者技术经理完成,所以项目设计师或者技术经理对于控制代码质量是多么重要。

 

后记:

首先欢迎大家拍砖。我只是从正面角度回答了这个问题,那么从反面角度也可以提问:什么是不好的代码?哪些是代码的怀味,这些就要参考《重构》大作了。

 

写这篇文章是看到很多技术不错的同事忙乎于各种技术框架,编程语言,新的技术,但是可能忽视了程序员的一些基本素养;另一方面,大家各忙各的,一个团队却没有统一的共识,如果大家都一致认为这不是好的代码,这是代码坏味,每个人都能察觉并贯彻某些原则再好不过,统一共识对团队来讲是个起码的问题。


其次,也是希望大家都能重视代码质量(大家都说我重视啊,可是看看我们自己写的代码就知道自己可能在说谎,控制代码质量是一个团队行为,而不仅仅是个人责任),因为代码质量就意味着工程质量,差的工程质量就是增加成本。好的代码肯定bug少,修改bug容易,每个人都乐于修改、查看、学习别人的代码,而不是看到别人的代码就很头痛,别人看你的代码也很心烦,这样就造成代码在团队中不能共享。项目组如果能够产出好的代码,赏心悦目的代码,对维护人员是喜事,对我们自己那就是一种美了,编程之美。这个过程其实是让我们真正快乐的东西,毕竟你做了让别人觉得是有价值的东西,美的东西。

 

 

   发表时间:2010-06-27  
(5)统一的规范
   ----我想这个只适用于团队(团队有内定的规范),对于个人而言,遵从语言规范就OK了……
0 请登录后投票
   发表时间:2010-06-27  
对不好的代码感触越深,
对好的代码感触才越深.
0 请登录后投票
   发表时间:2010-06-27  
H_eaven 写道
对不好的代码感触越深,
对好的代码感触才越深.


精辟 
0 请登录后投票
   发表时间:2010-06-27  
真正的高手,不是设计
而是去理解,维护并修改别人的代码
1 请登录后投票
   发表时间:2010-06-27  
确实是这样的~~设计很重要~~
0 请登录后投票
   发表时间:2010-06-27   最后修改:2010-06-27
前文提到,好的代码不仅仅是个人责任,而是团队责任。对项目组来讲,怎么比较容易地得到好的代码,不仅仅是靠个人素养。我试图从设计这道关卡,就关注代码质量。

从设计角度,可以解决粒度、耦合、灵活性这些问题,这些问题解决好了,往往更容易产出好的代码。比如粒度合适,类不会过大,方法不会过大。而设计工作可以由多人参与,减低了个人对代码质量完全控制的风险。

设计问题做好了,就是对于初级程序员,去填充架子,也容易产生好的代码。
0 请登录后投票
   发表时间:2010-06-27  
H_eaven 写道
对不好的代码感触越深,
对好的代码感触才越深.


一看就知道是高手
犀利的话,,赞一个,,
0 请登录后投票
   发表时间:2010-06-27  
对我来讲,首先考虑的是可读性,可维护性,其次才是可扩展性,
再下来是可测试性。
可读性,当然是注释,代码命名,正逻辑使用。
可维护性,主要是功能单一,接口参数清晰
可扩展性,就是楼主说的高内聚低偶合,再有就是整体代码是符合设计意图的。
可测试性,当然就是指比较方便进行单元测试。
不过说老实话,我最看重的是注释与代码命名。
其它的还好吧。
0 请登录后投票
   发表时间:2010-06-27  
设计确实很重要,好的设计能大大控制住项目的质量和减少编码阶段的成本
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics