十条不错的编程观点

转自:http://coolshell.cn/articles/2424.html

在Stack Overflow上有这样的一个贴子《What’s your most controversial programming opinion?》,翻译成中文就是“你认为最有争议的编程观点是什么?”,不过,在400多个主回贴,以及千把个子回贴中,好像并不是很有争议,而是令人相当的茅塞顿开,下面罗列一些,并通过我自己的经历和理解发挥了一些,希望对你有帮助。

1) The only “best practice” you should be using all the time is “Use Your Brain”.

唯一的“Best Practice”并不是使用各种各样被前人总结过的各种设计方法、模式,框架,那些著名的方法、模式、框架只代码赞同他们的人多,并不代表他们适合你,你应该更多的去使用你的大脑,独立地思考那些方法、模式、框架出现的原因和其背后的想法和思想,那才是“best practice”。事实上来说,那些所谓的“Best Practice”只不过是限制那些糟糕的程序员们的破坏力。

2)Programmers who don’t code in their spare time for fun will never become as good as those that do.

如果你对编程没有感到一种快乐,没有在你空闲的时候去以一种的娱乐方式去生活,无论是编程,还是运动,还是去旅游,那么你只不过是在应付你的工作,无时无刻不扎在程序堆中,这样下来,就算是你是一个非常聪明,非常有才华的人,你也不会成为一个优秀的编程员,要么只会平平凡凡,要么只会整天扎在技术中成为书呆子。当然,这个观点是有争议,热情和能力的差距也是很大的。不过我们可以从中汲取其正面的观点。

3)Most comments in code are in fact a pernicious form of code duplication.

注释应该是注释Why,而不是How和What,参看《惹恼程序员的十件事》,代码告诉你How,而注释应该告诉你Why。但大多数的程序并不知道什么是好的注释,那些注释其实和code是重复的,毫无意义。

4)XML is highly overrated

XML可能被高估了。XML对于Web上的应用是不错的,但是我们把其用到了各种地方,好像没有XML,我们都不会编程了。

5)Not all programmers are created equal

这是那些junior经理或是流程爱犯的错,他们总是认为,DeveloperA == DeveloperB,只要他们的title一样,他们以为他们的能力、工作速度、解决问题的方法,掌握的技能等等都是一样的。呵呵。更扯的是,在某些时候,就算是最差的程序员,他们也会认为其比别人强十倍,这就是现代的SB管理。

6)”Googling it” is okay!

Google只会给你知识,并不会教给你技能。那里只有“鱼”,没有“渔”,过度的使用Google,只会让你越来越离不开他,你越来越去要去立马告诉你答案,而你越来越不会自己去思考,自己去探索,去专研。如果KFC快餐是垃圾食品对我们的身体没有好处,那么使用Google也一种快餐文化对我们的智力发展大大的没有好处。

7)If you only know one language, no matter how well you know it, you’re not a great programmer.

如果你只懂一种语言,准确的说,如果你只懂一类语类,如:Java和C#,PHP和Perl,那么,你将会被局限起来,只有了解了各种各样的语言,了解了不同语言的不同方法 ,你才会有比较,只有了比较,你才会明白各种语言的长处和短处,才会让你有更为成熟的观点,而且不整天和别的程序在网上斗嘴争论是Windows好还是Unix好,是C好还是C++好,有这点工夫能干好多事了。世界因为不同而精彩,只知道事物的一面是有害的。

8)Your job is to put yourself out of work.

你的工作不是保守,那种教会徒弟,饿死师父的想法,不但是相当短浅的,而且还是相当脑残的。因为,在计算机世界里,你掌握的老技术越多,你就越没用,因为技术更新的太快。你对工作越保守,这个工作就越来越离不开你,你就越不越不能抽身去学新的东西,你也就越来越OUT了。记住:If you can’t be replaced then you can’t be promoted!

9)Design patterns are hurting good design more than they’re helping it.

很多程序员把设计模式奉为天神,他们过度的追求设计模式以至都都忘了需求是什么,结果整个系统设计被设计模式搞得乱七八糟,我们叫这种编程为“设计模式驱动编程”,正如第一点所说,如果你不懂得用自己的大脑思考的话,知其然,不知所以然的话,那么你不但得不到其好处,反而受其所累。

10)Unit Testing won’t help you write good code

准确地说,我们可以认为这是Test-Driven开发,其实,这种开发就是先写unit test case,这样的开发方式的主要目的是,为了防止你不会因为一个改动而引入Bug,但这并不会让你能写出更好的代码。这只会让你写出不会出错的代码。同第一点,这样的方法,只不过是防止糟糕的程序员,而并不是让程序员或代码质量更有长进。反而,通过Unit Test会为程序员的为自己代码做辩解的一种托辞。

最后,顺便说一下,以前去那个敏捷的公司面试,发现那个公司的某些技术人员中毒不浅,具体表现在上述的1)9)10)观点上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构上机实验之二分查找

题目描述 在一个递增的序列里,查找元素是否存在,若存在输出YES,不存在输出NO.输入 本题多组数据,首先输入一个数字n(n>100000),然后输入n个数,数据保证数列递增,然后再输入一个查找数字。输出 若存在输出…

IO之 Properties类加载文件

配置文件:资源文件(以.properties作为拓展名的文件)/属性文件: 做项目开发,为何使用配置文件? 把所有的数据存储在代码中,写死了,”硬编码”. 比如:在Java中需要连接数据库,必须拥有数据的账号和密码. 此时我们就得在Java代码中编写,类似的代码: String username”root”…

Makefile系列学习(博客)

http://blog.csdn.net/haoel/article/category/9198/3

数据结构实验之查找六:顺序查找

题目描述 在一个给定的无序序列里,查找与给定关键字相同的元素,若存在则输出找到的元素在序列中的位序和需要进行的比较次数,不存在则输出"No",序列位序从1到n,要求查找从最后一个元素开始,序列中无重复元素。 输入 连续多组数据输…

IO之数据流

数据流,提供了可以读/写任意数据类型的方法: DataOutputStream: 提供了 writeXxx(xxx value)方法. DataInputStream: 提供了 readXxx()方法. 注意: writeXxx和readXxx必须要对应起来, writeByte写出的数据,此时只能使用readByte读取回来.

可视化的状态机(FSM)

状态机这个概念已经在网上的博客和论坛中都已经说烂了,随便一搜都有一大堆。相关的废话就不多说了,在这里主要是分享一下如何可视化的设计状态机,如何增强项目的灵活性。这里通过一个生活中的电梯来了解一下状态机。 电梯逻辑如下图&#xf…

数据结构上机实验之顺序查找

题目描述 在一个的序列里&#xff0c;查找元素是否存在&#xff0c;若存在输出YES,不存在输出NO.输入 本题多组数据&#xff0c;首先输入一个数字n&#xff0c;然后输入n(n<1000)个数&#xff0c;然后再输入一个查找数字。输出 若存在输出YES,不存在输出NO.示例输入 4 1 3 5…

dll加载问题的解决方法

在使用LoadLibrary() 和LoadLibraryEx()加载dll文件的时候&#xff0c;会产生下面的错误&#xff1a; this application has failed to start because XXXXX.dll was not found. Re-installing the application may fix this problem. 其中xxxxx是你所调用的dll的文件名。 这类…

IO之 随机访问文件(RandomAccessFile)

随机访问文件(RandomAccessFile): 表示可以在该文件的任何位置写出和读取数据. API中文解释&#xff1a; 此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引&#xff0c;称为文件指针&…

数据结构实验之排序二:交换排序

题目描述 冒泡排序和快速排序都是基于"交换"进行的排序方法&#xff0c;你的任务是对题目给定的N个&#xff08;长整型范围内的&#xff09;整数从小到大排序&#xff0c;输出用冒泡和快排对这N个数排序分别需要进行的数据交换次数。 输入 连续多组输入数据&#xff…

关于通过dll导出类模板和函数模板

动态链接库中导出模板函数 C 支持函数模板&#xff0c;利用函数模板&#xff0c;可以简化我们的程序代码。我在自己的代码中也经常用到函数模板&#xff0c;但是以前一直以为函数模板是要放到头文件中的&#xff0c;否则调用模板函数时&#xff0c;编译器会找不到函数模板的定义…

数据结构实验之排序三:bucket sort

题目描述 根据人口普查结果&#xff0c;知道目前淄博市大约500万人口&#xff0c;你的任务是帮助人口普查办公室按年龄递增的顺序输出每个年龄有多少人&#xff0c;其中不满1周岁的按0岁计算&#xff0c;1到2周岁的按1岁计算&#xff0c;依次类推&#xff0c;大于等于100岁的老…

C++模板之隐式实例化、显示实例化、隐式调用、显示调用和模板特化详解

模板的实例化指函数模板&#xff08;类模板&#xff09;生成模板函数&#xff08;模板类&#xff09;的过程。对于函数模板而言&#xff0c;模板实例化之后&#xff0c;会生成一个真正的函数。而类模板经过实例化之后&#xff0c;只是完成了类的定义&#xff0c;模板类的成员函…

交叉排序

题目描述 输入N个数&#xff0c;把所有奇数位置上的数从小到大排序&#xff0c;把偶数位置上的数从大到小排序。输入 输入的第一行是一个正整数N(2<N<100)。 第二行是N个用空格隔开的整数。输出 输出只有一行N个数&#xff0c;是按要求排序后的序列&#xff0c;用空格隔开…

c++模板显示实例化,显示具体化,隐式实例化

函数模板是C新增的一种性质&#xff0c;它允许只定义一次函数的实现&#xff0c;即可使用不同类型的参数来调用该函数。这样做可以减小代码的书写的复杂度&#xff0c;同时也便于修改&#xff08;注&#xff1a;使用模板函数并不会减少最终可执行程序的大小&#xff0c;因为在调…

IO之 管道流

管道流: 实现两个线程之间的数据交互. PipedInputStream PipedOutputStream PipedReder PipedWriter 中文API解释&#xff1a; PipedInputStream public class PipedInputStreamextends InputStream管道输入流应该连接到管道输出流&#xff1b;管道输入流提供要写入管道输出流的…

AOE网上的关键路径

题目描述 一个无环的有向图称为无环图&#xff08;Directed Acyclic Graph&#xff09;&#xff0c;简称DAG图。 AOE(Activity On Edge)网&#xff1a;顾名思义&#xff0c;用边表示活动的网&#xff0c;当然它也是DAG。与AOV不同&#xff0c;活动都表示在了边上&#xff…

IO之NIO

NIO:New IO: 从JDK1.4开始提出的,新的IO,可以把一块磁盘文件映射到内存中,我们再去读取内存中的数据. 存放在java.nio包中. Java NIO&#xff08;New IO&#xff09;是从Java 1.4版本开始引入的一个新的IO API&#xff0c;可以替代标准的Java IO API 现在主要运用于服务器中…

图结构练习——判断给定图是否存在合法拓扑序列

题目描述 给定一个有向图&#xff0c;判断该有向图是否存在一个合法的拓扑序列。输入 输入包含多组&#xff0c;每组格式如下。 第一行包含两个整数n&#xff0c;m&#xff0c;分别代表该有向图的顶点数和边数。(n<10)后面m行每行两个整数a b&#xff0c;表示从a到b有一条有…

VS2013 加快编译速度 的方法整理

VS2013 加快编译速度 的方法整理 1.更改项目设置 项目|属性|C/C|代码生成|启用最小重新生成&#xff1a;Yes(/Gm)项目|属性|C/C|常规|调试信息格式&#xff1a;程序数据库(/Zi)项目|属性|配置属性-链接器-常规-“启用增量链接”选择“是” 最后&#xff0c;最好还要修改一处&a…