1.你应经常运行int,并研习其教诲,因为它的直觉和判断通常比你强得多。这一条说得很有道理,然而许多现代编译器也会找出许多同样的错误,Iit本身也由干过时、判断标准不一致或者无法检测未知的领域而导致许多错误。
还有许多像Saber C之类的其他工具也很有用。“经常”的意思是你应该每天聆听其教诲,而不是在最后时刻期待着Iint为代码降下福音。对从来没有int过的程序进行it,其结果通常会造成程序的不稳定,因此应当竭力避免。有人发现,在调试的时候多多关注int的教海,会非常有用。
2.你不应访问NU儿L指针,因为这样只会导致混乱和疯狂。
显然这句箴言抄错了,应该是“空指针”(ulpointer)不是NULL指针(NULL pointer),避免人们把空指针和NU儿L宏混淆。除此之外,这一条无需多解释。空指针指向的位置可能是恶龙、恶魔、coredup,以及数不清的邪恶生物,如果你惊7它们的美梦,它们就会在程序里肆虐横行。空指针并不会指向0或任何类型,尽管一些老旧的代码会做这种假设。
3.你不应将所有函数参数都强制转换为期待的类型,即使你认为无需如此因执,才能避免迟早会到来的报应。程序员应当懂得所用语言的类型结构,才能免遭不幸。与一些人的认知不同,int和long并不是同一种类型。历史上曾有非常短暂的一段时期,int和long的大小和表示是相同的,但有人偏偏笃信这一点,而且这种观点还会一直延续,即使在64位计算机已经流行的现在。
而且,与那些住在污染的东方沼泽(指Uiⅸ的诞生地贝尔实验室)的人们的信仰不同,NU儿L其实并不是指针类型,作为函数参数使用时,必须强制转换成正确的类型才可以。
4.如果头文件没有给库函数定义返回类型,你应该谨慎地自行定义,以避免对程序造成伤害。先知Ansi C还以她的智慧教导我们,你应当鞭答供应商,以驱逐之痛要求他们提供库函数的头文件。毕竟,只有他们才知道使用他们的魔法的正确方式。先知还说,尝试自己给函数添加定义是不智之举,会坠入无尽bug的地狱。
5,你应当检查所有字符串(以及所有数组)的数组边界,因为肯定有人会在该输入00的地方输入supercalifragilisticexpialidocious。正如戒律中提到的超长字符串,这一条戒律的结论就是永远不要使用gets0,因为它是魔鬼的工具。你的接口应当永远将数组边界传达给仆人(指函数),若仆人不遵从,就应当发配到删除之地,使其永远不能为恶。
6,如果一个函数声称在遇到问题时会返回错误码,那么你应当检查错误码,即使这样做会让代码量变成三倍。如果你认为“不会发生在我头上”,那么神一定会惩罚你的傲慢。
真正的信徒都希望更好的错误机制,因为显式检查返回代码非常麻烦,不检查则是最大的诱惑。但在遥远的救赎之日到来之前,你必须耐心谨慎地走过崎岖的小路,否则无论是供应商、机器还是软件,都会在你论文答辩或客户交付日前一天晚上为你送上意想不到的礼物。
7.你应当学习库,尽量不要重新发明,因为库的代码更短、更易懂,能让你更快乐、更有效率。数不清的异教徒对干库持有轻蔑的态度,并且迷信自己能做得更好(“效率更高”)。C库的确有一些功能写得不好,但使用库远远要比自己发明方形的轮子要快、要容易。但是要非常了解库能做什么、不能做什么,避免使用不可靠的功能。
8.不管你喜不喜欢,你应当使用1TBR风格,让程序的目的和结构能被同事理解。你的创造力应该放在解决问题上,而不是放在制造理解障碍上。这条戒律给那些不了解古谚语的新手和饭依者造成了一些怀疑。
1TBR指的是第一代先知布莱恩·克尼汉和丹尼斯·里奇在他们的文章中演示的风格(即K&R风格的变种)。很多人批评这种风格很难用,但实际上它只是有点难学,一旦学会之后就非常清晰易懂,非要说缺点的话,就是有点容易出错而已。
C语言程序员的“八诫”
1.你应经常运行int,并研习其教诲,因为它的直觉和判断通常比你强得多。这一条说得很有道理,然而许多现代编译器也会找出许多同样的错误,Iit本身也由干过时、判断标准不一致或者无法检测未知的领域而导致许多错误。 还有许多像Saber C之类的其他工具也很有用。“经常”的意思是你应该每天聆听其教诲,而不是在最后时刻...
我想自己开发软件需要学习什么??
学习软件需要什么?一个优秀的程序员也不是十天半个月就能够造就出来的,必须要扎扎实实学好编程基础知识,要经历一个漫长且辛苦的学习和程序开发过程。因此计算机专业学生,首先要做好吃苦的准备。当我们在学习一些基础课如java,C语言等,我们会感觉到似乎这些没什么大作用,这些近似于低级语言的东西好像再...
程序员个人年度工作总结
我认为:一名好的程序员不仅要为人谦和正直,对事业认真兢兢业业。而且在业务能力上更要专研。我,作为一名年轻的程序员需要学习的东西还很多很多。 一、思想修养 作为一名程序员,要想完成工作的责任,首先必须具备程序员的工作素质,树立正确的世界观和人生观。在这项目中我认真参加各种学习和各种新文本的功能开发。有...
什么是中国最牛黑客??
简介:1999年之前做加密解密、破解工作,1999年开始学习网络安全和黑客技术及编程语言,如C、Perl、html、Javascript、VBscript、asp、php、Visual Basic、Visual C++。曾是绿色兵团麒麟小组成员,主办过亿客网络安全联盟(现在关闭),现为某公司程序员。 网名:陈三公子 真实姓名:陈三堰 O I C Q :316835 简介:第八军团...
月薪8000和月薪30000的程序员差在哪里?
八、学区房:3K:想想而已。3W:主要问题是买哪一套。九、口头禅:3K:孩子不是学习的料,怎么都没用。3W:你有没有试?试了再说。总结:3K与3W在育儿教育方面的确有很多不同点,这些不同点或多或少也在你身上发生过。其它不同点,欢迎留言探讨。3K与3W在育儿教育方面也有相同点:每位父母,都...
如何系统地自学 Python
任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识。 硬知识“硬知识”指的是编程语言的语法、算法和数据结构、编程范式等,例如:变量和类型、循环语句、分支、函数、类。这部分知识也是具有普适性的,看上去是掌握了一种语法,实际是建立了一种思维。例如:让一个 Java 程序员去学习 ...
学习《软件工程》心得和体会
详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。 软件工程的原则是指围绕...
如何系统地自学 Python
任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识。°1 硬知识“硬知识”指的是编程语言的语法、算法和数据结构、编程范式等,例如:变量和类型、循环语句、分支、函数、类。这部分知识也是具有普适性的,看上去是掌握了一种语法,实际是建立了一种思维。例如:让一个 Java 程序员去...
大学生必考的证书有哪些?
普通话水平测试(Putonghua Shuiping Ceshi,简称PSC)是由国家语言文字工作委员会、国家教育委员会、广播电影电视部三部委于1994年10月发布的一项语言考试制度。考试以口试形式进行,考试检测应试者掌握和运用普通话能力的水平。考试过程中全程录音。考试结束后,获得足够成绩的应试者可以获得对应的普通话水平证书...
C语言程序员的“八诫”
c语言逞序员的八诫1.你应经常运行int,并研习其教诲,因为它的直觉和判断通常比你强得多。这一条说得很有道理,然而许多现代编译器也会找出许多同样的错误,Iit本身也由干过时、判断标准不一致或者无法检测未知的领域而导致许多错误。还有许多像Saber C之类的其他工具也很有用。“经常”的意思是你应该...