关于编码轨范

关于编码规范
有一天在电梯里,听到两个同事在讨论编码规范的问题
一个同事的意思是,规范是个P,要写有个性的代码,这样才能体现出自己的技术能力.
当然我想大部分人和我一样,对此持不同看法,这位同事应该是个新手,孰不知技术能力不仅仅是体现在代码写的有多另类,而且还有设计思路以及考虑问题的全面性,让这样一个同事去开发企业应用是件很危险的事情.

代码写的好,我认为应该包括
  • 古人说的好,可扩展性,可测性
  • 一般人都了解的代码规范,比如不用e.printTrackTrace()之类
  • 不仅仅是你和上帝看的懂,也要让其他人可以通过代码了解你的思路.
  • 简明扼要
  • 不滥用设计模式
  • 合理利用工具和资源
  • 合理控制性能
  • 要考虑多线程


公司里新人比较多,相比一些成熟的外企比如ebay来说,还是太嫩,一般来说,越大的公司越靠自律
1 楼 weirddun 2011-06-23  
接手一个编码不规范的项目会死人
2 楼 hs598375774 2011-06-24  
代码不规范看到就想拿刀去砍人啊。。。
3 楼 xiangkun 2011-06-24  
一般人都了解的代码规范,比如不用e.printTrackTrace()之类

为什么?? LZ可不可以说说理由啊??

我们一直都在用这个,查日志比较好查。。。!!
4 楼 wanbin021614 2011-06-24  
xiangkun 写道
一般人都了解的代码规范,比如不用e.printTrackTrace()之类

为什么?? LZ可不可以说说理由啊??

我们一直都在用这个,查日志比较好查。。。!!



这个只是打日志到console里面,要是想看昨天的日志 怎么办呢 调试的时候当然可以这么干
5 楼 hs598375774 2011-06-25  
wanbin021614 写道
xiangkun 写道
一般人都了解的代码规范,比如不用e.printTrackTrace()之类

为什么?? LZ可不可以说说理由啊??

我们一直都在用这个,查日志比较好查。。。!!



这个只是打日志到console里面,要是想看昨天的日志 怎么办呢 调试的时候当然可以这么干




在真正的项目中用e.printTrackTrace(),你老大会拿刀杀了你。。
6 楼 ordinary 2011-06-25  
wanbin021614 写道
xiangkun 写道
一般人都了解的代码规范,比如不用e.printTrackTrace()之类

为什么?? LZ可不可以说说理由啊??

我们一直都在用这个,查日志比较好查。。。!!



这个只是打日志到console里面,要是想看昨天的日志 怎么办呢 调试的时候当然可以这么干



不会啊!看你日志是怎么设置的。我们连你用print的都能打到文件中去
7 楼 catastiger 2011-06-25  
ordinary 写道
wanbin021614 写道
xiangkun 写道
一般人都了解的代码规范,比如不用e.printTrackTrace()之类

为什么?? LZ可不可以说说理由啊??

我们一直都在用这个,查日志比较好查。。。!!



这个只是打日志到console里面,要是想看昨天的日志 怎么办呢 调试的时候当然可以这么干



不会啊!看你日志是怎么设置的。我们连你用print的都能打到文件中去

哥们,到大公司里呆下吧,这些不能这样写的。e.printTrackTrace()是直接通不过检查的。写代码前要先能功能的串讲与反串讲,这个阶段PD,PM,测试MM,开发一般都要参加的,通过后就是表设计,类图设计,然后给几个同事项目经理REVIEW下,OK了才可以写代码。写代码呢,一般人是先写实现,我们现在用的是TDD(测试驱动开发)是先定义接口,然后写测试代码,然后写实现。呵呵,不说TDD了,是有点烦的。
写代码一般有一个统一的规范模板文件,写出来的东西大家都差不多长的一个样。这个过程,除了日志,还要考虑if else圈复杂度,变量的使用,异常的处理,然后线程以及事务的控制。如果用了代码模板,就可以格式化下代码就行了,很快。还有整个代码不会多引一个包,不会出现import xxxx.* 的情况。否则检查是通不过的。完成后就是跑单元测试,对于外部接口可以用EasyMock,单元测试OK,覆盖率要达到80%以上,然后就是给别人做code review,不要忘记了提交测试前还要进行白盒黑盒的扫描,安全测试是必要的
呵呵,好像是扯远了点!
8 楼 yonghong915 2011-06-25  
是有点复杂的。但这确实是一个项目的规范。只有有个很好的规范,项目的质量才能有保证。
9 楼 nirvana1988 2011-06-25  
e.printTrackTrace()也可以输出到错误日志中,并不是只能输出到console里面啊。难道大公司提倡的是用log4j??

求解!!
10 楼 leibos 2011-06-25  
catastiger 写道
ordinary 写道
wanbin021614 写道
xiangkun 写道
一般人都了解的代码规范,比如不用e.printTrackTrace()之类

为什么?? LZ可不可以说说理由啊??

我们一直都在用这个,查日志比较好查。。。!!



这个只是打日志到console里面,要是想看昨天的日志 怎么办呢 调试的时候当然可以这么干



不会啊!看你日志是怎么设置的。我们连你用print的都能打到文件中去

哥们,到大公司里呆下吧,这些不能这样写的。e.printTrackTrace()是直接通不过检查的。写代码前要先能功能的串讲与反串讲,这个阶段PD,PM,测试MM,开发一般都要参加的,通过后就是表设计,类图设计,然后给几个同事项目经理REVIEW下,OK了才可以写代码。写代码呢,一般人是先写实现,我们现在用的是TDD(测试驱动开发)是先定义接口,然后写测试代码,然后写实现。呵呵,不说TDD了,是有点烦的。
写代码一般有一个统一的规范模板文件,写出来的东西大家都差不多长的一个样。这个过程,除了日志,还要考虑if else圈复杂度,变量的使用,异常的处理,然后线程以及事务的控制。如果用了代码模板,就可以格式化下代码就行了,很快。还有整个代码不会多引一个包,不会出现import xxxx.* 的情况。否则检查是通不过的。完成后就是跑单元测试,对于外部接口可以用EasyMock,单元测试OK,覆盖率要达到80%以上,然后就是给别人做code review,不要忘记了提交测试前还要进行白盒黑盒的扫描,安全测试是必要的
呵呵,好像是扯远了点!

是扯远了,不要以为在大公司就了不起,也没必要扯什么TDD,说事就说事。你们那么多人,经过那么多流程,本身就和TDD思想背道而驰。
11 楼 zhu_chen001 2011-06-25  
leibos 写道
catastiger 写道
ordinary 写道
wanbin021614 写道
xiangkun 写道
一般人都了解的代码规范,比如不用e.printTrackTrace()之类

为什么?? LZ可不可以说说理由啊??

我们一直都在用这个,查日志比较好查。。。!!



这个只是打日志到console里面,要是想看昨天的日志 怎么办呢 调试的时候当然可以这么干



不会啊!看你日志是怎么设置的。我们连你用print的都能打到文件中去

哥们,到大公司里呆下吧,这些不能这样写的。e.printTrackTrace()是直接通不过检查的。写代码前要先能功能的串讲与反串讲,这个阶段PD,PM,测试MM,开发一般都要参加的,通过后就是表设计,类图设计,然后给几个同事项目经理REVIEW下,OK了才可以写代码。写代码呢,一般人是先写实现,我们现在用的是TDD(测试驱动开发)是先定义接口,然后写测试代码,然后写实现。呵呵,不说TDD了,是有点烦的。
写代码一般有一个统一的规范模板文件,写出来的东西大家都差不多长的一个样。这个过程,除了日志,还要考虑if else圈复杂度,变量的使用,异常的处理,然后线程以及事务的控制。如果用了代码模板,就可以格式化下代码就行了,很快。还有整个代码不会多引一个包,不会出现import xxxx.* 的情况。否则检查是通不过的。完成后就是跑单元测试,对于外部接口可以用EasyMock,单元测试OK,覆盖率要达到80%以上,然后就是给别人做code review,不要忘记了提交测试前还要进行白盒黑盒的扫描,安全测试是必要的
呵呵,好像是扯远了点!

是扯远了,不要以为在大公司就了不起,也没必要扯什么TDD,说事就说事。你们那么多人,经过那么多流程,本身就和TDD思想背道而驰。

规范的代码是必须的,这样代码才可以积累,否则你写的代码都是一次性的,永远没有沉淀。
12 楼 vision2000 2011-06-25  
catastiger 写道
ordinary 写道
wanbin021614 写道
xiangkun 写道
一般人都了解的代码规范,比如不用e.printTrackTrace()之类

为什么?? LZ可不可以说说理由啊??

我们一直都在用这个,查日志比较好查。。。!!



这个只是打日志到console里面,要是想看昨天的日志 怎么办呢 调试的时候当然可以这么干



不会啊!看你日志是怎么设置的。我们连你用print的都能打到文件中去

哥们,到大公司里呆下吧,这些不能这样写的。e.printTrackTrace()是直接通不过检查的。写代码前要先能功能的串讲与反串讲,这个阶段PD,PM,测试MM,开发一般都要参加的,通过后就是表设计,类图设计,然后给几个同事项目经理REVIEW下,OK了才可以写代码。写代码呢,一般人是先写实现,我们现在用的是TDD(测试驱动开发)是先定义接口,然后写测试代码,然后写实现。呵呵,不说TDD了,是有点烦的。
写代码一般有一个统一的规范模板文件,写出来的东西大家都差不多长的一个样。这个过程,除了日志,还要考虑if else圈复杂度,变量的使用,异常的处理,然后线程以及事务的控制。如果用了代码模板,就可以格式化下代码就行了,很快。还有整个代码不会多引一个包,不会出现import xxxx.* 的情况。否则检查是通不过的。完成后就是跑单元测试,对于外部接口可以用EasyMock,单元测试OK,覆盖率要达到80%以上,然后就是给别人做code review,不要忘记了提交测试前还要进行白盒黑盒的扫描,安全测试是必要的
呵呵,好像是扯远了点!



一些列的东东做完,拿给客户一看,说,这不是我们想要的,然后loop
能折腾死人,有木有?
13 楼 catastiger 2011-06-25  
vision2000 写道
catastiger 写道
ordinary 写道
wanbin021614 写道
xiangkun 写道
一般人都了解的代码规范,比如不用e.printTrackTrace()之类

为什么?? LZ可不可以说说理由啊??

我们一直都在用这个,查日志比较好查。。。!!



这个只是打日志到console里面,要是想看昨天的日志 怎么办呢 调试的时候当然可以这么干



不会啊!看你日志是怎么设置的。我们连你用print的都能打到文件中去

哥们,到大公司里呆下吧,这些不能这样写的。e.printTrackTrace()是直接通不过检查的。写代码前要先能功能的串讲与反串讲,这个阶段PD,PM,测试MM,开发一般都要参加的,通过后就是表设计,类图设计,然后给几个同事项目经理REVIEW下,OK了才可以写代码。写代码呢,一般人是先写实现,我们现在用的是TDD(测试驱动开发)是先定义接口,然后写测试代码,然后写实现。呵呵,不说TDD了,是有点烦的。
写代码一般有一个统一的规范模板文件,写出来的东西大家都差不多长的一个样。这个过程,除了日志,还要考虑if else圈复杂度,变量的使用,异常的处理,然后线程以及事务的控制。如果用了代码模板,就可以格式化下代码就行了,很快。还有整个代码不会多引一个包,不会出现import xxxx.* 的情况。否则检查是通不过的。完成后就是跑单元测试,对于外部接口可以用EasyMock,单元测试OK,覆盖率要达到80%以上,然后就是给别人做code review,不要忘记了提交测试前还要进行白盒黑盒的扫描,安全测试是必要的
呵呵,好像是扯远了点!



一些列的东东做完,拿给客户一看,说,这不是我们想要的,然后loop
能折腾死人,有木有?


敏捷开发呀,并不是一味的息写代码呀。写之前不是有串讲的么!
14 楼 shoushou2001 2011-06-25  
编码设置、类文件模板、日志和异常处理机制、单元测试(Junit/Mock)、检查工具(PMD/FindBugs/Checkstyle...)、Code review、个人良好的编码习惯...很多很多
15 楼 getclass 2011-06-26  
不要让你的代码有异味
16 楼 yin_chinawitsky 2011-06-27  
曾接手过一个无规范采编系统,真的想死