`

为什么要遵守代码规范

阅读更多

几乎所有的软件开发公司,都有相应的代码规范,有些大公司,特别是大的外包公司(尤其是对日外包公司),其代码规范已经到了事无巨细的地步。但相信很多开发人员(包括我刚开始软件开发时),都会产生一些疑问:功能,性能无疑是最重要的,设计也很重要,为什么却要把这么多的精力放在代码规范上呢,仅仅是为了方便别人阅读代码,便于维护吗?这样一套套的代码规范真的可以加快开发速度吗?

在回答这些问题以前,先来看一下Wicket,Tapestry两个功能相类似的基类其中的代码节选。

来自Wicket1.3.3中org.apache.wicket.component的代码

/**

 * Called on very component after the page is rendered. It will call onAfterRender for it self

 * and its children.

 */

public final void afterRender()

{

// if the component has been previously attached via attach()

// detach it now

try

{

setFlag(FLAG_AFTER_RENDERINGtrue);

onAfterRender();

getApplication().notifyComponentOnAfterRenderListeners(this);

if (getFlag(FLAG_AFTER_RENDERING))

{

throw new IllegalStateException(Component.class.getName() +

" has not been properly detached. Something in the hierarchy of " +

getClass().getName() +

" has not called super.onAfterRender() in the override of onAfterRender() method");

}

// always detach children because components can be attached

// independently of their parents

onAfterRenderChildren();

}

finally

{

// this flag must always be set to false.

setFlag(FLAG_RENDERINGfalse);

}

}

来自Tapestry3.04基类org.apache.tapestry.AbstractComponent的代码

/** 

     *

     *  Returns a {@link Map} of all bindings for this component.  This implementation

     *  is expensive, since it has to merge the disassociated bindings (informal parameters,

     *  and parameters without a JavaBeans property) with the associated bindings (formal

     *  parameters with a JavaBeans property).

     *

     * @since 1.0.5

     *

     **/

    public Map getBindings()

    {

        Map result = new HashMap();

        // Add any informal parameters.

        if (_bindings != null)

            result.putAll(_bindings);

        // Now work on the formal parameters

        Iterator i = _specification.getParameterNames().iterator();

        while (i.hasNext())

        {

            String name = (String) i.next();

            if (result.containsKey(name))

                continue;

            IBinding binding = getBinding(name);

            if (binding != null)

                result.put(name, binding);

        }

        return result;

    }

很容易看出,以上的这几段代码,与公司的开发规范相比,也有很高的吻合度,事实上,Wicket和Tapestry的作者都是长期编写架构的开发和设计人员,是非常顶尖的开发人员,远非一般的高级工程师可比,但看这些代码,却没有多少技巧在其中,可以算的上代码规范很好的遵守者。很多国内很程序员经常会觉得,这些高手写的代码应该很难,很复杂。但事实告诉我们,大道至简,这么多的资深程序员甚至是架构师经过多年的编写代码,却都达到了同样的规范,可谓殊途同归。为什么呢?这说明,只有这些来自经验的规范才真正的体现了水平,才是多代程序员的精华所在。当开发人员很好的遵守代码规范来编写代码时,才可以慢慢的体会到规则,才会体会到设计。可以想像一下,如果遵守代码规范,一个方法不得超出50行代码,那么大量的if else就不可能出现,而要代之以各种设计(如工厂,策略等设计模式)来解决问题。

大家如果有兴趣看一下他们的源代码,可以去Apache网站下载,他们的代码中只有很少的一部分,估计不足5%的代码才会超出50行/每方法,违反常规的代码规范的内容也会非常的少。

开发规范不仅不是一种可有可无的东西,反而是历代程序员经过多年的开发所磨炼出来的经验总结。对于程序员来讲,想写好代码,从遵守规范开始。

最后以小说里的一句话来结束本文:技巧的本质就是规则,而规则使人成长

<!--EndFragment-->
分享到:
评论
10 楼 taikeqi 2010-01-24  
代码规范是要遵守,上面的顶级程序员他的工作目标和工作期限都是和一般的坐项目的程序员没法比的。在国内,大伙大都快速搞定工作为第一目标,代码规范知道会遵守就去遵守,不知道不会遵守就不管呢。
总之,业务需求完成第一。
9 楼 yangyi 2009-09-25  
孟子曰:人之患在好为人师
8 楼 yf42 2009-09-25  
sdnasky 写道
if (_bindings != null)
            result.putAll(_bindings);

if没大括号

很多大师都没大括号的,能看懂就得了
7 楼 sdnasky 2009-09-24  
if (_bindings != null)
            result.putAll(_bindings);

if没大括号
6 楼 wl95421 2009-09-24  
想说的很简单
规范这种东西,表面上看只是规范,就象你说的,生产需要个模子一样

但背后体现的是多少年来软件工程师设计的思想
如果大家都能理解这一点
那么对遵守的规范认识更深一些,自然就更容易遵守规范了
5 楼 Laynepeng 2009-09-22  
原因是,不是每个人都是大师,都有经验去写出好的代码。尤其是密集劳动力型的外包行业。为了尽量避免bugs的数量,和减轻开发leader去复查代码花费的精力,规范是最好的做法。就好像生产需要个模子一样。。。

楼主的例子太过理想化,大道至简,有几个人做到大道了?你?我?还是谁?
4 楼 sharong 2009-09-22  
嗯,随着开发时间的增长,自己的代码风格也越来越和spring,hibernate这些开源软件类似了。
3 楼 youngJiang 2009-09-22  
说的好,大道至简
2 楼 zhuxing 2009-03-20  
规则的本质就是技巧,而技巧使人成长
1 楼 生于菇乡 2009-02-19  
“技巧的本质就是规则,而规则使人成长。”


相关推荐

    JAVA代码规范及快捷键优化.docx

    JAVA代码规范及快捷键优化 在软件开发过程中,代码规范和快捷键优化是非常重要的两个方面。以下是关于JAVA代码规范和快捷键...遵守统一的JAVA代码规范和快捷键优化是非常重要的,这可以大大提高开发效率和代码质量。

    阿里巴巴代码规范-泰山版.pdf

    代码规范的遵守能够有效提升软件系统稳定性,确保代码质量和效率。 为了推动手册的实施和应用,阿里巴巴团队还推出了Java开发规约的IDE插件,并在2017年杭州云栖大会上对外发布。该插件的下载量达到162万人次。同时...

    Java代码规范.pdf

    Java代码规范文档中涉及的知识点涵盖了Java编程实践中的命名风格和代码组织方式,旨在为Java开发人员提供一份行业内部开发的准则,确保代码的可读性、一致性和维护性。以下是从提供的文档内容中提炼出的相关知识点:...

    JAVA代码规范 JAVA规范 代码规范

    Java代码规范是编程实践中至关重要的一个方面,它旨在确保代码的质量、可读性和维护性。以下是一些核心的Java代码规范要点: 1. **命名规范**: - 类名使用大驼峰命名法,所有单词首字母大写,例如`ClassName`。 ...

    C/C++代码规范

    在实际的开发过程中,代码规范需要团队成员共同遵守和维护。一般情况下,团队会根据项目需求、开发语言特性以及个人或团队的编程习惯来制定或选择一套适合的代码规范。这包括在使用版本控制系统时如何格式化代码、...

    JAVA代码规范模版

    在软件开发过程中,代码规范是确保代码质量、可读性和可维护性的重要工具。这篇文档主要介绍了基于JBuilder的Java代码规范模板,旨在提供一套统一的编程风格,从而提高团队协作效率。以下是对各个部分的详细说明: ...

    VB代码规范,VB代码规范

    VB代码规范是确保代码质量和可读性的重要指南,它涵盖了变量命名、注释、格式化、错误处理等多个方面。以下是一些关键的VB代码规范要点: 1. **变量命名**:变量名应清晰、简洁且有意义,避免使用单字母或模糊的...

    阿里代码规范13213.zip

    《阿里代码规范13213.pdf》是一个重要的资源,主要针对Java开发人员,旨在提供一套标准和指导原则,以确保代码的质量、可读性和可维护性。在Java开发过程中,遵循良好的编码规范至关重要,因为它有助于团队协作,...

    C++代码规范培训心得

    在C++代码规范培训中,我深感编程习惯的重要性,这次的经历让我明白,代码质量不仅仅是程序能否正确运行的问题,更是关乎代码的效率和可维护性。在软件开发中,我们追求的是代码的清晰度和易读性,因为这直接影响到...

    Idea 阿里Java代码规范 插件

    阿里Java代码规范插件是专为IntelliJ IDEA(简称Idea)开发的一款工具,旨在帮助开发者遵循阿里巴巴的Java编程规范,从而提升代码质量和可维护性。这款插件的运用,能够有效地在编码过程中实时检查代码,确保代码...

    Java写代码规范

    为了确保代码的可读性、可维护性和团队协作效率,遵循一套统一的代码规范显得至关重要。以下是对Java编写代码规范的详细解读: 1. **命名规范** - 类名:采用大驼峰命名法(每个单词首字母大写),如`ClassName`。...

    Java代码规范-Android版

    Java代码规范针对Android开发的规定相当细致,涉及到代码排版、注释、标识符命名以及代码的可读性等方面,旨在确保代码的整洁性、一致性和可维护性。以下是根据给定文件信息,详细解读的Java代码规范知识点。 首先...

    郝斌的代码规范

    ### 郝斌的代码规范详解 #### 一、引言 郝斌老师的《代码规范》是一篇关于如何编写高质量、可维护的C语言程序的文章。文章不仅提供了实用的编程建议,还强调了代码规范的重要性。本文将根据郝斌老师的原作进行深入...

    Android和php代码规范1

    在软件开发中,代码规范是非常重要的,因为它可以提高代码的可读性、可维护性和可重用性。...遵守代码规范可以提高代码的可读性、可维护性和可重用性。本文介绍了Android和PHP代码规范,帮助开发者编写高质量的代码。

    华为代码规范

    《华为代码规范》是华为公司为提升代码质量、提高团队协作效率而制定的一套编码标准。这份规范旨在确保代码的可读性、可维护性和一致性,对于任何开发人员来说,遵循这样的规范都是非常重要的。 1. **概述** - **...

Global site tag (gtag.js) - Google Analytics