`
阅读更多

记得刚参加工作不久,我写了一个工具,是从文档自动生成代码的工具。那时候比较笨,虽然学了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你的代码

 

 

 

分享到:
评论

相关推荐

    程序员专用 编程输入法

    标题中的“程序员专用编程输入法”指的是专门为程序员设计的特殊输入法工具,旨在提升编码效率。这类输入法通常具有以下特点: 1. **快捷代码输入**:程序员输入法能够通过快捷键、组合键或者自定义短语来快速输入...

    程序员项目交接文档

    程序员项目交接文档概要 IT 项目交接文档概要是程序员在项目交接过程中的重要文件,它对项目的开发、测试和维护起着至关重要的作用。本文档概要将对程序员项目交接文档的主要内容进行概要介绍。 人事模块是程序员...

    java程序员面试交流项目经验

    java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流...

    程序员简历程序员简历.pdf

    程序员简历程序员简历.pdf

    历年程序员考试真题

    2000-2010历年程序员考试真题,对软考程序员的一些试题总结,包含答案;程序员考试上午科目和下午科目的考试形式与考核内容已经趋于稳定,考生应紧扣考试大纲和指南,有针对性地进行学习。

    程序员教程(pdf)

    《程序员教程》是一本针对初学者和有一定经验的程序员精心编写的教材,旨在全面介绍编程基础知识和实践技能。这本书以PDF格式提供,便于电子阅读和随时查阅。它涵盖了程序员需要掌握的各种关键知识点,无论你是刚踏...

    PHP程序员简历模板 iOS程序员简历模板 Android程序员简历模板 Web前端程序员简历模板 Java程序员简历等等

    iOS程序员简历模板 Android程序员简历模板 Web前端程序员简历模板 Java程序员简历模板 C/C++程序员简历模板 NodeJS程序员简历模板 架构师简历模板 通用程序员简历模板PHP程序员简历模板 iOS程序员简历模板 Android...

    程序员-工作日志示例

    程序员工作日志示例管理文档 工作日志是程序员日常工作中不可或缺的一部分,它可以帮助程序员更好地管理自己的时间、提高工作效率、记录工作进度、总结工作经验等。本文档是一个程序员工作日志示例,旨在帮助程序员...

    程序员个性电脑桌面壁纸

    【程序员个性电脑桌面壁纸】这一主题,其实涵盖了两个主要方面:一是程序员文化,二是电脑桌面壁纸的个性化选择。这两者都是IT行业中与个人工作环境和精神风貌紧密相关的元素。 首先,我们来谈谈程序员文化。程序员...

    程序员的呐喊,完整扫描版

    程序员要不要懂数学等。另外,他还谈到了很多大公司的理念,比如亚马逊做平台为什么那么成功等。最后,《程序员的呐喊》还收录了他写的Google面试攻略,这篇文章可以说为无数应试者点亮了明灯。  《程序员的呐喊》...

    雷军 我的十年程序员生涯.doc

    2. 完美主义:雷军认为,优秀的程序员必须是一个完美主义者。只有这样的人,才能把事情做得极致。 3. 程序员定义:雷军认为,优秀的程序员定义是热爱写程序,热爱电脑世界的美妙,并且是一个完美主义者。 4. 程序...

    《Java程序员》

    望本书能让即将走向工作岗位的程序员和已经成为程序员的朋友,对工作和软件行业做到既“知己”又“知彼”,在入职前对职业状况清楚了解,入职后对职业方向清晰认识,使大家的工作更加得心应手,更加轻松愉快。

    程序员(程序员受益终身的文档)

    克服“程序员相轻”的心态,首先需要认识到自我中心主义的危害,学会放下自我,开放心态,接受他人的观点和建议。这不仅仅是对个人修养的提升,也是团队合作精神的体现。通过相互倾听和学习,促进团队成员之间的理解...

    什么样的人适合做程序员?程序员应该具有什么样的素质程序员四大禁忌

    在IT行业中,程序员是至关重要的角色,他们负责创建和维护软件、应用程序以及各种技术解决方案。那么,什么样的人适合成为程序员呢?程序员应具备哪些素质?同时,又有哪些禁忌需要避免呢? 首先,程序员需要耐得住...

    程序员教程(程序员考试的相关内容)

    程序员教程和相关考试的一些试题,真题!程序员教程(程序员考试的相关内容)程序员教程(程序员考试的相关内容)程序员教程(程序员考试的相关内容)

    程序员表白神器 love-master

    程序员表白神器你值得拥有-程序员表白神器你值得拥有 程序员表白神器你值得拥有-程序员表白神器你值得拥有 程序员表白神器你值得拥有-程序员表白神器你值得拥有 程序员表白神器你值得拥有-程序员表白神器你值得拥有 ...

    别只做一个程序员|中国程序员的出路|程序员的副业

    [程序员小飞]别只做一个程序员_中国程序员的出路_程序员的副业

    2021年前端程序员的年终工作总结.docx

    "2021年前端程序员的年终工作总结" 通过对2021年前端程序员的年终工作总结的分析,我们可以总结出以下几个重要的知识点: 1. 软件研发:在软件研发方面,前端程序员学习了许多重要的知识点,如面向对象语言、ASP...

    600个程序员常用的单词和词汇

    600个程序员常用的单词和词汇600个程序员常用的单词和词汇600个程序员常用的单词和词汇600个程序员常用的单词和词汇600个程序员常用的单词和词汇600个程序员常用的单词和词汇600个程序员常用的单词和词汇600个程序员...

Global site tag (gtag.js) - Google Analytics