`
simohayha
  • 浏览: 1404080 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

代码大全读书笔记1

阅读更多
这么好的书,觉得写点东西,记录一下比较好。

4.1选择编程语言。

程序员使用熟悉的编程语言生产率高于使用不熟悉的编程语言,并且高级语言比低级语言的效率要高得多,作者列出了几种高级语言的每一行代码与等效的c语言代码行数之比。比如java是2.5,而perl和python就是6.而且编程语言影响程序员的思维随处可见,作者举了个他遇到的项目,那就是一群fortran程序员去写c++,最后写出来的代码就是伪装成c++的fortran代码。

这个很有感触,自己第一个项目当时有用到c,而当时项目组里面只有一个人对c比较熟悉,可是没办法,人不够,只好上我们几个做java的,最后开发效率非常低下,而且代码写的及其丑陋,问题一大堆,就一个c里面的字符串,把我们几个java程序员就给郁闷了好久。

说道表达能力,象python,perl,ruby之类的脚本语言是c或者java之类的不能比的,就像上面作者给出的统计,一行脚本语言比一行c或者java代码要完成的工作多得多,所以很多游戏都会采用脚本作为一个辅助。

上次看到一篇文章就是讲java的标准库里面的一段c风格的java代码:


引用
Occasionally in Java, you come across an API that makes you sit up and go “What were they thinking?” Take, for example, the code to list all the threads in the current ThreadGroup. Rather than having the obvious method: i.e. one that returns a list (or array) of threads, the signature looks like this:

int enumerate(Thread[] list)

You pass an empty array to the method, which will be filled with Thread objects. The method then returns the number of threads it placed in the array. If the array is not long enough to accept all the threads, the overflow will be silently discarded.

To initialise the array, you must rely on ThreadGroup#activeCount, which only returns an approximation of the number of threads that enumerate might return.

If you’re looking to avoid memory leaks in a non-garbage-collected environment, then it makes perfect sense for an API to push responsibility for memory management back up its caller, and to gracefully handle whichever buffer-size it’s given to fill. When you’ve got pervasive GC, it just looks (and is) clumsy.

So the obvious answer to “What were they thinking?”, of course, is “They were thinking like C programmers”.

Which in turn leads one to suspect that this particular API has been around since before Java was called Java.


我觉得特别是这种有gc的语言的程序员和无gc的语言的程序员,如果让他们互换的话,写出来的程序是最会不伦不类的。

4.2 编程约定

其实很简单,那就是变量名称,类的名称,方法名称,代码的格式,注释的规定等等等等,这些很细节的东西。程序因此也需要底层的完整性。成功编程的一个关键就是避免随意的变化。

这些我觉得在项目中很重要,比如方法的名称,在我的一个项目中,那些c代码中的名称,有的是c的命名规则,有的是java的命名规则,所以这些代码给人感觉极度混乱和邋遢。

4.3深入一种语言去编程。

作者给出了建议,那就是如果你使用的语言缺乏你所希望用的构件,或者倾向于出现其他种类的问题,那就应该去试着弥补他,发明你自己的编码约定,标准,类库以及其他的改进措施。

作者这里给出了一个vb的例子,其实像apache 的commons那几个包,或者说像spring,hibernate这些框架也都是深入java去编程的很好的例子。





分享到:
评论
3 楼 笨笨狗 2008-06-30  
俺在做ruby,哈哈哈哈
不过js还是最爱:)
2 楼 simohayha 2008-06-28  
最近待业中呢。。你呢?做ruby了?
1 楼 shaka 2008-06-27  
simohayha最近用什么语言?

相关推荐

Global site tag (gtag.js) - Google Analytics