记得刚参加工作不久,我写了一个工具,是从文档自动生成代码的工具。那时候比较笨,虽然学了Python,但是完全没想到用Python实现这个工具,是用C++写的。工具很简单,但是帮了我很大的忙。后来找同事Review代码,他给我提了一个中肯的建议。他说,在C/C++里面,应该写成:
if (NO_RESULT == rst)
不应该写成:
if (rst == NO_RESULT) // 因为你很容易就会写成 rst = NO_RESULT
我觉得他讲的很有道理啊,于是我把我C++的风格都改成了这种,连Java的都改了(我知道Java里面不会有这个错误,除非正好你的rst是boolean类型的)。可是一两年之后,我发现这种写法非常不舒服,因为它违反了我整个代码的风格,就是变量写前面,常量写后面。什么意思呢,如果我写:
if (rst < SOME_CONSTANT),而不会写
if(SOME_CONSTANT > rst),谁都知道他们是一样的。可是,绝大部分人写代码读代码都喜欢前一种,为什么?
因为思维正常。于是我把我所有的写法(包括今后在项目中,在iPHone中写的),都是
if (rst == NO_RESULT)。这样改了之后,我确实碰到过一次写错了,可能是写快了,少写了一个=号,不过马上有编译器的warning。我想说得就是,也许无数牛B的编码规则说,请写if (NO_RESULT == rst),但是其实这是不对的,因为虽然你可能可以避免极少的错误,但是你却让读代码(包括写的人)很不爽,不适应。这个教条我觉得应该废除,因为当你习惯==之后,几乎是不会犯错的。
另外还有些教条,我们一定要搞清楚意思。
goto是魔鬼,这不是本意,本意是goto有风险,当goto(label)太多了,有问题。那么你封装好一个代码,从最里面的循环退出,用一句goto,绝对没有问题,而且是最好的结构,比你用任何方法都好(可能有很多人会说,你应该重构代码,取消那么多层循环,可是也许用多层循环是最好的表达方式,没法重构)。那么,那么就用一个goto吧。我见过牛人的代码,有goto,没有重构。代码很好懂。但是人家几千行代码就1,2处goto,而且写了注释,非常清晰。
do while。这个一定要少用,因为正常人做事情都是习惯写while的。但是不表示不可以用,少数地方用了,也没什么问题。当然了,do while很容易被while等价取代。其实不是,是因为95%的情况while都比do while适用。但是你应该明白,这个是可以用的,只要不要滥用。否则为什么那么多语言留着它。我还可以告诉你,ruby还有这么用的, do something until condition。
所以我想说的是,不要教条。我觉得写代码这么久,下面这些是我觉得比较真理的:
1. 减少重复你自己;
2. 多用库, 多用成熟的库;
3. 多写测试;测试要快速,重用,自动。
4. 一开始捡起一个大致正确的设计,多次重构,但是不要伤筋动骨。如果要大重构,可能还是重写比较好
5. 注释一定要越少越好,最好的代码是不需要注释的。这不是说鼓励你不写注释,而是鼓励好的注释和好的代码结构
6. 不要滥用设计模式
7. 少用高明的算法
8. 注意基本:数据类型,是不是溢出啊,是不是死锁啊,注意会不会空指针
9. 找一个负责又有水平的人review你的代码
分享到:
相关推荐
程序员浏览器程序员浏览器程序员浏览器程序员浏览器程序员浏览器程序员浏览器程序员浏览器程序员浏览器
程序员工资程序员工资程序员工资程序员工资程序员工资程序员工资
程序员考试程序员考试程序员考试程序员考试
程序员的酸甜苦辣程序员的酸甜苦辣程序员的酸甜苦辣程序员的酸甜苦辣
程序员第二步从程序员到项目经理 程序员第二步从程序员到项目经理 程序员第二步从程序员到项目经理
如何做一个有素养的程序员如何做一个有素养的程序员如何做一个有素养的程序员如何做一个有素养的程序员如何做一个有素养的程序员如何做一个有素养的程序员如何做一个有素养的程序员如何做一个有素养的程序员如何做一...
[程序员实习日记大全]java程序员实习日记多篇.pdf[程序员实习日记大全]java程序员实习日记多篇.pdf[程序员实习日记大全]java程序员实习日记多篇.pdf[程序员实习日记大全]java程序员实习日记多篇.pdf[程序员实习日记...
vc++程序员必读vcvc++程序员必读++程序员必读vc++程序员必读
程序员简历模板程序员简历模板程序员简历模板程序员简历模板程序员简历模板程序员简历模板程序员简历模板程序员简历模板程序员简历模板程序员简历模板程序员简历模板程序员简历模板程序员简历模板程序员简历模板...
EOS程序员教程 EOS程序员教程 EOS程序员教程
java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流...
程序员的爱情 程序员的爱情 程序员的爱情
程序员考试大纲程序员考试大纲程序员考试大纲程序员考试大纲程序员考试大纲程序员考试大纲程序员考试大纲程序员考试大纲
程序员简历模板 程序员简历模板 程序员简历模板
工作总结 程序员工作总结 程序员工作总结 程序员工作总结 程序员工作总结 程序员工作总结 程序员工作总结 程序员工作总结 程序员工作总结 程序员工作总结 程序员工作总结 程序员
程序员简历程序员简历.pdf
2000-2010历年程序员考试真题,对软考程序员的一些试题总结,包含答案;程序员考试上午科目和下午科目的考试形式与考核内容已经趋于稳定,考生应紧扣考试大纲和指南,有针对性地进行学习。
iOS程序员简历模板 Android程序员简历模板 Web前端程序员简历模板 Java程序员简历模板 C/C++程序员简历模板 NodeJS程序员简历模板 架构师简历模板 通用程序员简历模板PHP程序员简历模板 iOS程序员简历模板 Android...