• 2004-03-02

    编码培训

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/dreamhead-logs/108373.html

    今天又在部门内部做了一个培训,这次是关于编码的。

    编码是整个软件过程最为基础的一环,在各位软件工程大师对过程的拼命鼓吹下,编码似乎成了无足轻重的一环。编码,在我的心目中要远远高于所谓的过程,毕竟软件开发归根结底还是要靠编码来完成。

    少了物质基础,再多的文明都无异于水中月。

    关于编码,有许多东西值得探讨,从编码风格到语言特性,从面向对象到重构习惯。

    我列了一个很长的提纲,涉及了许多我认为与编码相关的方面。有人建议我精简一下,毕竟一次讨论这么多的东西显然不现实,即便一一点到,也只能是浅尝辄止。于是,我把这次培训的范围定在了Java语言上。

    为什么要讨论语言本身?
    我的理由来自《C++沉思论》,“语言的设计就是程序库的设计,程序库的设计就是语言的设计”。
    程序库的作者往往面临的是比普通应用程序员更严格的考验,他们要想尽一切办法,防止自己的客户对自己程序库的误用。语法上的保证显然比文档或是行政的力量更为强大。所以,他们将把语言的语法研究到无以复加的地步。于是,Java世界关于编码最重要的一本书《Effective Java》出自一位程序库的作者——Joshua Bloch,JDK Collection的实现者之一。
    高质量的程序库显然不是程序库作者一厢情愿就能完成的,语言本身在这个问题上的表现同样举足轻重。C++之父在《C++语言的设计与演化》中为我们讲述了C++的进化过程,从中不难看出,程序库对于语言的演化起了多大作用。

    我的讨论基本采用的是从语法到语义,再到实现的方式。

    让我感觉惊讶的是,一些已经写许多Java程序的同事居然问出“static method不能override吗?”之类的问题。
    太多的同事将精力集中于问题的本身,而对解决问题的方法却很少进行深入的思考,于是,我也不难理解,为什么他们做了几年,除了经验增多,水平并无多少长进。

    还有一些令我遗憾的东西,如果说大家对于语法和语义还稍有热情的话,对于实现,则没有多少人有兴趣。于我而言,只了解上层语法语义而不了解具体实现无异于“浮沙筑高台”。

    人和人,真的是不同的!

    分享到:

    历史上的今天:

    引用地址: