-- 作者:admin
-- 发布时间:4/14/2007 12:35:00 AM
-- [转帖] 我的编码手册 -- 邢红瑞 发表于 2006-4-13 11:24:28
转自:http://blogger.org.cn/blog/more.asp?name=hongrui&id=23966 看到很多牛人,说别人的代码风格如何如何,我也打算说两句。 1 代码缩进 说到这个问题,缩进使用tab还是空格,是没有事情可干。早在visual studuio6时代,也就是9年前,vc6就提供了代码格式化功能,java的主流IDE都有代码格式化功能,你觉得他的代码不好,有抱怨的时间,早就format好了,一个程序员连自己的IDE能干什末都不知道,恐怕说不过去了。如果你觉得大家代码不统一,都安装checkStyle,这样代码规范基本一致。 下面说出java主流IDE提供的功能(重构部分除外),支持未声明类的import,生成构造函数,生成get/set方法,代码块的注释和解除注释,不用你一行一行的写“//”。不过你要是python程序员就麻烦一些,python的缩进是代码的一部分。 2 变量的命名 vc程序员最好使用匈牙利命名法,java程序员不要使用,你要遵循javabean的规范,类的首字母大写,方法名的首字母小写,因为你的类可能要被java的反射机制调用,到时候找不到就麻烦了。我一直使用idea Introduce Variable,觉得也没有什末。 3 程序的注释 程序最好只写必要的注释,不要写的过多,那样会耽误别人看注释的时间,方法名最好让人判断出要干什末,一个方法内代码不要超过20行,(详见我得bloghttp://www.w3china.org/blog/more.asp?name=hongrui&id=8479)。最好最后再补注释,因为一开始代码和注释一块写,如果项目紧,很可能只修该代码,不改注释,后人阅读会产生驴唇不对马嘴的问题。 4 基本的编程约定 关于约定我不知道是不是程序员中的潜规则,这是我以前我在贝尔面试的一个问题, 请写出 BOOL flag 与“零值”比较的 if 语句: 我写的 if(a==true) { } 结果答案是 if(a) { } 后来得知这是林锐那本《高质量C++/C 编程指南》的题目,据我所知,c++实际提供了布尔类型的值,这就是程序员中奇技淫巧。 编写strcpy函数(10分) 已知strcpy函数的原型是char *strcpy(char *strDest, const char *strSrc); 其中strDest是目的字符串,strSrc是源字符串。 (1)不调用C++/C的字符串库函数,请编写函数 strcpy (2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? 注意写不出这样的代码不是致命的,用strcpy不用strncpy可能会要你的程序的小命,产生缓冲区溢出。建议你最好编写安全的代码,这比什末都重要。 而且最好使用开源而且跨平台的类库,例如c++ STL,java的JSTL ,不要另辟蹊径,这样利于移植,而且这样的代码经过了考验,比你写的代码稳定的多。 印度人常写这样的代码,有两个bool变量,a为true,b为false,a是false,b为true。 if(a==true) b=false; else b=true; 我看了之后,笑了半天,一句b=!a;不就ok了吗? 更有甚者,a,b两个整型,如果a为1,b为0,否则b就是99 印度阿三的代码 if(a==1) b=0 else b=99; 我告诉他, b= (a==1)? 0 :99;可怜的这个红头阿三不知道java还有3元运算符。当时就是这帮人按时高质量的完成了我们的任务,这很值得中国软件的反思,我们细节很强,但是没有大局观,这里细节决定不了成败。
|