从零开始编写自己的C#框架(3)——开发规范

简介:

 由于是业余时间编写,而且为了保证质量,对写出来的东西也会反复斟酌,所以每周只能更新两章左右,请大家谅解,也请大家耐心等待,谢谢大家的支持。

  初学者应该怎样学习本系列内容呢?根据我自己的学习经验,一般直接看一遍的方法,学习与认知都会比较浅,很快就忘了。而看完后写笔记、手抄或将所看的内容照着打一遍或多次的,可以比较深刻的理解文章或代码中的思想,并能将里面的核心内容牢记在心。

 

  对于开发规范,都是老生常谈的事情了,很多正规一些的公司都有一套规范来约束,这些规范都是大同小异。

  规范为什么那么重要?为什么大家反复提而初学者们都是当作耳边风,无视这些要求呢?下面先举几个例子给初学者说明一下。

 

  08年的时候在一家主要做OA开发的公司,负责OA的二次开发,当时接到项目代码时傻眼了,没有文档、没有数据字典,代码规范就不要讲了,代码中的变量命名与数据库表和字段全是用拼音首字母来命名的,当时真有想死的感觉。当时只能感叹说,原开发人员真是太奇葩了。

  记得几年前带过的一批应届生(当时公司对代码要求不是很严格,只追求能快速出产品),在进公司的时候我也详细为他们讲了开发规范以及相关要求,然后进入开发状态。而对于这些新进公司的同事来说,开始时应该都会觉得我比较烦,又要求开发规范也要求编写开发文档。不过因为公司不太重视,所以当时也没有很好的实行下去,那他们对开发规范也就不重视了。

  一开始做的项目还好,给一些不太复杂的需求,而我也会经常检查他们的代码,每周大概会有一到两天抽空开个小会议,为他们讲解代码中存在的问题以及一些算法,所以代码虽然不太规范,但也没有什么问题。后来有一段时间特忙没空理会大家,而他们也开始各自独立负责一些小项目开发。其中一位开发的是一款《斗地主》KJava手机游戏,经过一段时间努力奋战后游戏完成了,而这位同事由于个人原因也同时请辞离职,可想而知这个项目是什么结果。项目在测试时发现存在不少BUG,想叫人接手这个项目时,才发现无人可以接手,因为项目里的注释量少,又没有完善的开发文档,而代码编码也不够规范,花上不少时间研究也没弄清里面的关系......最终的结果是公司花了不少投入而得出一个无法维护的项目。

  还有一个比较经典的案例也是KJava手机项目,做的是《日历》类的应用软件,开发人员花了大量的时间,研究中国农历的时辰、二十八宿、五行、天干地支、民俗吉凶日等内容,终于开发出能自动计算每日时辰吉凶禁忌的手机日历,投入到市场也有很不错的下载量和收入,推广效果很好。产品投入市场三个月后,领导要求对该项目进行二次开发,增加一些新的需求,当这位同事重新熟悉自己写的代码时才发现,自己也很难看懂自己写过的代码了~~~大家是不是觉得不太可能发生这种事情,自己写过的代码也会不记得?呵呵......主文件2K多行代码没有多少注释,功能调用比较混乱,命名与编码也不规范,再加上各种时辰吉凶禁忌的计算......听到这些你是否已经开始晕了,最后他自己也只能做一些UI的修改,当然在这以后他对代码规范的重视也就完全不一样了。

  当然例子还有很多,这类型的例子并不是偶然现象,相信类似的情型也曾发生过在不少公司项目中,为什么会发生这么多类似的案例呢?大家在追求高效开发,快速产出的时候,与代码规范也并不冲突啊?

 

  接触多不少类似项目后,发现主要原因可能有这几个方面:

  第一是没有一个好的开发框架,对于新人来说,还没有养成良好的开发习惯,接触的项目也很少,他们不知道如何去规范自己的代码,也没有成熟的例子给他们模仿,在开发的时候过于自由没有约束的话,就会自由发挥,将那里影响自己开发速度,不喜欢的事情全部剔除,然后做出的东西就非常个性化啦;

  第二是不懂得开发规范的重要性(根本不重视),觉得自己写的代码自己肯定可以看得懂,至于其他人能否看得明白那就无所谓啦,看不明白就最好,那样的话公司就离不开自己,万一公司想炒掉自己这个项目可能就黄了。或者代码自己很熟悉,自以为别人也一样能看明白。但他们没有考虑的是,可读性好、严格执行开发规范的代码在应聘新公司时其实就是一张非常好的敲门砖。

  第三是公司领导不重视,上行下效,如果领导层都不重视,那怎么将开发规范贯彻下去?

  第四是技术主管不懂得代码规范以及其重要性。

  ......

  当然也有可能是其他方面的原因,但最重要的还是开发者自身问题,如果你有有一个良好的开发习惯,那么其他外因都影响不到你。

 

  而遵守开发规范真的会浪费你的开发时间,降低开发效率吗?

  对于我本人的开发习惯来说,代码中的注释非常多,几乎占代码量的1/3到1/2(这只是个人习惯,并不推荐大家都用这种方法),很多人都会觉得不可思议,也许很多人都会想,你这个家伙太浪费时间了,老板真是浪费金钱养你......哈哈......真正的事实是我所在公司的技术团队中,10年以上经验的大牛占了一半,而我的开发速度与效率可以排在前二,为什么呢?第一我对开发规范比较重视,已成为我的一种习惯;第二我打字非常快;第三我对项目很了解;第四我必须这么做,因为开发出来的框架、封装好的类与函数是直接提供给其他同事调用的,如果开发不够规范且注释又少的话,那其他同事就会很头痛了,那么可能要花很多时间与大家沟通说新增了什么功能,它的做什么用的,该怎么调用等等,这样会浪费很多开发时间。

 

  严格按开发规范实施,编写大量注释表面看会占用不少时间,但从长期的角度来看,它提高了团队的开发效率,对二次开发维护也有非常重要的帮助。大家可以设想一下,几十万行的代码,如果没有好的注解,那就得天天在做猜迷游戏,经常要与大家沟通,了解某个函数是如何使用的,或干脆不用别人已开发的功能,自己重新写过,那太多的个性化会使项目将来维护起来特别麻烦,这将很大的浪费团队开发效率。而项目在进行二次开发维护时,由于时间跨度或接手的人不同了,那他要了解之前的功能以及相关业务流程,那将是多少苦逼的事情。

  如果一个系统只需要100行代码,那里问题也不大。如果有一千行代码,那么认真研究一下也没可以搞定。要是一万行、十万行以上代码时,不要说别人要理解你开发的框架中,各个接口、类、函数是干什么用的,就算是自己过了段时间也会不清楚为什么代码是这样写的,设置某个参数到底有什么用,某些函数是做什么用的......

 

  看过有园友在博客上说,只要命名规范,写不写注释是无所谓的事情,呃......这个嘛要根据国情,国内很多开发人员的E文并不怎么样,当然也包括我在内,没有注释的话相信不少朋友会很晕,看得很吃力,除非公司能有非常好的文档与足够的时间给予学习。这可能也是我这菜鸟水平,没办法进那些高大上公司的原因,呵呵......

 

  讲了一大堆看似无关的事情,其实主要目的是告诉初学者们,开发规范比你们想象中还重要,所以接下来就不要再懒惰了,从现在起认真要求自己,养成良好的开发习惯,对你的职业生涯的帮助将会非常大。

  那么本框架开发中,我们要使用什么样的开发规范呢?

  网上很多规范内容都非常详细,并不一定适合本本项目,所以针对本项目的需求我对相关的规范文档进行了一些修改。对于本文档你只要了解就可以了,具体到编码时你按我代码中的风格尝试去编写,慢慢你就可以掌握大部分的要求了,至于更详细更规范的要求,等本项目完成后大家再继续自己去进修吧o(∩_∩)o

  

 

  文档下载地址:点击下载



    本文转自 AllEmpty 博客园博客,原文链接http://www.cnblogs.com/EmptyFS/p/3634660.html:,如需转载请自行联系原作者






相关文章
|
15天前
|
数据可视化 网络协议 C#
C#/.NET/.NET Core优秀项目和框架2024年3月简报
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排名不分先后,都是十分优秀的开源项目和框架,每周定期更新分享(欢迎关注公众号:追逐时光者,第一时间获取每周精选分享资讯🔔)。
|
2月前
|
算法 BI API
C#/.NET/.NET Core优秀项目和框架2024年1月简报
C#/.NET/.NET Core优秀项目和框架2024年1月简报
|
8月前
|
开发框架 .NET C#
C#/.NET/.NET Core优秀项目和框架精选(坑已挖,欢迎大家踊跃提交PR或者Issues中留言)
C#/.NET/.NET Core优秀项目和框架精选(坑已挖,欢迎大家踊跃提交PR或者Issues中留言)
143 1
|
3月前
|
数据采集 开发框架 JavaScript
C#/.NET/.NET Core优秀项目和框架2023年12月简报
C#/.NET/.NET Core优秀项目和框架2023年12月简报
|
4月前
|
开发框架 数据可视化 C#
C# | 上位机开发新手指南(三)框架
在上位机开发中,Windows Forms是使用最广泛的C#框架之一。Windows Forms是.NET Framework中的一个GUI框架,提供了丰富的GUI控件和易于使用的编程模型,可以快速开发Windows桌面应用程序。Windows Forms已经存在多年,并且在.NET Framework中得到广泛的支持和优化,因此在上位机开发中得到了广泛应用。除此之外,随着.NET Core的不断发展,越来越多的开发人员开始使用跨平台的C#框架进行上位机开发,例如使用Electron或Avalonia等框架开发基于Web技术的桌面应用程序。
168 0
C# | 上位机开发新手指南(三)框架
|
4月前
|
Rust 算法 C#
C#/.NET/.NET Core优秀项目和框架2023年11月简报
C#/.NET/.NET Core优秀项目和框架2023年11月简报
|
6月前
|
开发框架 API C#
C#/.NET/.NET Core优秀项目和框架精选(23年10月更新,欢迎大家踊跃提交PR一起完善让优秀的项目和框架不被埋没)
C#/.NET/.NET Core优秀项目和框架精选(23年10月更新,欢迎大家踊跃提交PR一起完善让优秀的项目和框架不被埋没)
160 0
|
6月前
|
JavaScript C# 数据安全/隐私保护
C#/.NET/.NET Core优秀项目和框架2023年9月简报
C#/.NET/.NET Core优秀项目和框架2023年9月简报
|
7月前
|
JavaScript 小程序 API
C#/.NET/.NET Core优秀项目和框架8月简报
C#/.NET/.NET Core优秀项目和框架8月简报
|
7月前
|
Oracle 架构师 关系型数据库
C#反射应用之实现动态可配置可扩展框架的简单示例
C#反射应用之实现动态可配置可扩展框架的简单示例