从零开始编写自己的C#框架(3)——开发规范
由于是业余时间编写,而且为了保证质量,对写出来的东西也会反复斟酌,所以每周只能更新两章左右,请大家谅解,也请大家耐心等待,谢谢大家的支持。
初学者应该怎样学习本系列内容呢?根据我自己的学习经验,一般直接看一遍的方法,学习与认知都会比较浅,很快就忘了。而看完后写笔记、手抄或将所看的内容照着打一遍或多次的,可以比较深刻的理解文章或代码中的思想,并能将里面的核心内容牢记在心。
对于开发规范,都是老生常谈的事情了,很多正规一些的公司都有一套规范来约束,这些规范都是大同小异。
规范为什么那么重要?为什么大家反复提而初学者们都是当作耳边风,无视这些要求呢?下面先举几个例子给初学者说明一下。
08年的时候在一家主要做OA开发的公司,负责OA的二次开发,当时接到项目代码时傻眼了,没有文档、没有数据字典,代码规范就不要讲了,代码中的变量命名与数据库表和字段全是用拼音首字母来命名的,当时真有想死的感觉。当时只能感叹说,原开发人员真是太奇葩了。
记得几年前带过的一批应届生(当时公司对代码要求不是很严格,只追求能快速出产品),在进公司的时候我也详细为他们讲了开发规范以及相关要求,然后进入开发状态。而对于这些新进公司的同事来说,开始时应该都会觉得我比较烦,又要求开发规范也要求编写开发文档。不过因为公司不太重视,所以当时也没有很好的实行下去,那他们对开发规范也就不重视了。
一开始做的项目还好,给一些不太复杂的需求,而我也会经常检查他们的代码,每周大概会有一到两天抽空开个小会议,为他们讲解代码中存在的问题以及一些算法,所以代码虽然不太规范,但也没有什么问题。后来有一段时间特忙没空理会大家,而他们也开始各自独立负责一些小项目开发。其中一位开发的是一款《斗地主》KJava手机游戏,经过一段时间努力奋战后游戏完成了,而这位同事由于个人原因也同时请辞离职,可想而知这个项目是什么结果。项目在测试时发现存在不少BUG,想叫人接手这个项目时,才发现无人可以接手,因为项目里的注释量少,又没有完善的开发文档,而代码编码也不够规范,花上不少时间研究也没弄清里面的关系......最终的结果是公司花了不少投入而得出一个无法维护的项目。
还有一个比较经典的案例也是KJava手机项目,做的是《日历》类的应用软件,开发人员花了大量的时间,研究中国农历的时辰、二十八宿、五行、天干地支、民俗吉凶日等内容,终于开发出能自动计算每日时辰吉凶禁忌的手机日历,投入到市场也有很不错的下载量和收入,推广效果很好。产品投入市场三个月后,领导要求对该项目进行二次开发,增加一些新的需求,当这位同事重新熟悉自己写的代码时才发现,自己也很难看懂自己写过的代码了~~~大家是不是觉得不太可能发生这种事情,自己写过的代码也会不记得?呵呵......主文件2K多行代码没有多少注释,功能调用比较混乱,命名与编码也不规范,再加上各种时辰吉凶禁忌的计算......听到这些你是否已经开始晕了,最后他自己也只能做一些UI的修改,当然在这以后他对代码规范的重视也就完全不一样了。
当然例子还有很多,这类型的例子并不是偶然现象,相信类似的情型也曾发生过在不少公司项目中,为什么会发生这么多类似的案例呢?大家在追求高效开发,快速产出的时候,与代码规范也并不冲突啊?
接触多不少类似项目后,发现主要原因可能有这几个方面:
第一是没有一个好的开发框架,对于新人来说,还没有养成良好的开发习惯,接触的项目也很少,他们不知道如何去规范自己的代码,也没有成熟的例子给他们模仿,在开发的时候过于自由没有约束的话,就会自由发挥,将那里影响自己开发速度,不喜欢的事情全部剔除,然后做出的东西就非常个性化啦;
第二是不懂得开发规范的重要性(根本不重视),觉得自己写的代码自己肯定可以看得懂,至于其他人能否看得明白那就无所谓啦,看不明白就最好,那样的话公司就离不开自己,万一公司想炒掉自己这个项目可能就黄了。或者代码自己很熟悉,自以为别人也一样能看明白。但他们没有考虑的是,可读性好、严格执行开发规范的代码在应聘新公司时其实就是一张非常好的敲门砖。
第三是公司领导不重视,上行下效,如果领导层都不重视,那怎么将开发规范贯彻下去?
第四是技术主管不懂得代码规范以及其重要性。
......
当然也有可能是其他方面的原因,但最重要的还是开发者自身问题,如果你有有一个良好的开发习惯,那么其他外因都影响不到你。
而遵守开发规范真的会浪费你的开发时间,降低开发效率吗?
对于我本人的开发习惯来说,代码中的注释非常多,几乎占代码量的1/3到1/2(这只是个人习惯,并不推荐大家都用这种方法),很多人都会觉得不可思议,也许很多人都会想,你这个家伙太浪费时间了,老板真是浪费金钱养你......哈哈......真正的事实是我所在公司的技术团队中,10年以上经验的大牛占了一半,而我的开发速度与效率可以排在前二,为什么呢?第一我对开发规范比较重视,已成为我的一种习惯;第二我打字非常快;第三我对项目很了解;第四我必须这么做,因为开发出来的框架、封装好的类与函数是直接提供给其他同事调用的,如果开发不够规范且注释又少的话,那其他同事就会很头痛了,那么可能要花很多时间与大家沟通说新增了什么功能,它的做什么用的,该怎么调用等等,这样会浪费很多开发时间。
严格按开发规范实施,编写大量注释表面看会占用不少时间,但从长期的角度来看,它提高了团队的开发效率,对二次开发维护也有非常重要的帮助。大家可以设想一下,几十万行的代码,如果没有好的注解,那就得天天在做猜迷游戏,经常要与大家沟通,了解某个函数是如何使用的,或干脆不用别人已开发的功能,自己重新写过,那太多的个性化会使项目将来维护起来特别麻烦,这将很大的浪费团队开发效率。而项目在进行二次开发维护时,由于时间跨度或接手的人不同了,那他要了解之前的功能以及相关业务流程,那将是多少苦逼的事情。
如果一个系统只需要100行代码,那里问题也不大。如果有一千行代码,那么认真研究一下也没可以搞定。要是一万行、十万行以上代码时,不要说别人要理解你开发的框架中,各个接口、类、函数是干什么用的,就算是自己过了段时间也会不清楚为什么代码是这样写的,设置某个参数到底有什么用,某些函数是做什么用的......
看过有园友在博客上说,只要命名规范,写不写注释是无所谓的事情,呃......这个嘛要根据国情,国内很多开发人员的E文并不怎么样,当然也包括我在内,没有注释的话相信不少朋友会很晕,看得很吃力,除非公司能有非常好的文档与足够的时间给予学习。这可能也是我这菜鸟水平,没办法进那些高大上公司的原因,呵呵......
讲了一大堆看似无关的事情,其实主要目的是告诉初学者们,开发规范比你们想象中还重要,所以接下来就不要再懒惰了,从现在起认真要求自己,养成良好的开发习惯,对你的职业生涯的帮助将会非常大。
那么本框架开发中,我们要使用什么样的开发规范呢?
网上很多规范内容都非常详细,并不一定适合本本项目,所以针对本项目的需求我对相关的规范文档进行了一些修改。对于本文档你只要了解就可以了,具体到编码时你按我代码中的风格尝试去编写,慢慢你就可以掌握大部分的要求了,至于更详细更规范的要求,等本项目完成后大家再继续自己去进修吧o(∩_∩)o
文档下载地址:点击下载
版权声明:
本文由AllEmpty原创并发布于博客园,欢迎转载,未经本人同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。如有问题,可以通过1654937@qq.com 联系我,非常感谢。
发表本编内容,只要主为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:327360708 或Email给我(1654937@qq.com),大家一起探讨。
更多内容,敬请观注博客:http://www.cnblogs.com/EmptyFS/
从零开始编写自己的C#框架(3)——开发规范的更多相关文章
- 从零开始编写自己的C#框架(2)——开发前准备工作
没想到写了个前言就受到很多朋友的支持,大家的推荐就是我最大的动力(推荐得我热血沸腾,大家就用推荐来猛砸我吧O^-^O),谢谢大家支持. 其实框架开发大家都知道,不过要想写得通俗点,我个人觉得还是挺吃力 ...
- 从零开始编写自己的C#框架(26)——小结
一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...
- 从零开始编写自己的C#框架(1)——前言
记得十五年前自学编程时,拿着C语言厚厚的书,想要上机都不知道要用什么编译器来执行书中的例子.十二年前在大学自学ASP时,由于身边没有一位同学和朋友学习这种语言,也只能整天混在图收馆里拼命的啃书.而再后 ...
- 从零开始编写自己的C#框架(20)——框架异常处理及日志记录
最近很忙,杂事也多,所以开发本框架也是断断续续的,终于在前两天将前面设定的功能都基本完成了,剩下一些小功能遗漏的以后发现再补上.接下来的章节主要都是讲解在本框架的基础上进行开发的小巧. 本框架主要有四 ...
- 从零开始编写自己的C#框架(17)——Web层后端首页
后端首页是管理员登陆后进入的第一个页面,主要是显示当前登陆用户信息.在线人数.菜单树列表.相关功能按键和系统介绍.让管理员能更方便的找到息想要的内容. 根据不同系统的需要,首页会显示不同的内容,比如显 ...
- 从零开始编写自己的C#框架(15)——Web层后端登陆功能
对于一个后端管理系统,最重要内容之一的就是登陆页了,无论是安全验证.用户在线记录.相关日志记录.单用户或多用户使用帐号控制等,都是在这个页面进行处理的. 1.在解决方案中创建一个Web项目,并将它设置 ...
- 从零开始编写自己的C#框架(11)——创建解决方案
这段时间一直在充电,拜读了园子中大神们的博文(wayfarer的<设计之道>.TerryLee的<.NET设计模式系列文章>.卡奴达摩的<设计模式>还有其他一些零散 ...
- 从零开始编写自己的C#框架(8)——后台管理系统功能设计
还是老规矩先吐下槽,在规范的开发过程中,这个时候应该是编写总体设计(概要设计)的时候,不过对于中小型项目来说,过于规范的遵守软件工程,编写太多文档也会拉长进度,一般会将它与详细设计合并到一起来处理,所 ...
- 从零开始编写自己的C#框架(9)——数据库设计与创建
对于千万级与百万级数据库设计是有所区别的,由于本项目是基于中小型软件开发框架来设计,记录量相对会比较少,所以数据库设计时考虑的角度是:与开发相结合:空间换性能:空间换开发效率:减少null异常.... ...
- 从零开始编写自己的C#框架 ---- 系列文章
目录: 从零开始编写自己的C#框架(1)——前言从零开始编写自己的C#框架(2)——开发前的准备工作从零开始编写自己的C#框架(3)——开发规范从零开始编写自己的C#框架(4)——文档编写说明从零开始 ...
随机推荐
- 深入理解JavaScript中 fn() 和 return fn() 的区别
在js中,经常会遇到在函数里调用其它函数的情况,这时候会有 fn() 这种调用方式,还有一种是 return fn() 这种调用方式,一些初学者经常会一脸萌逼地被这两种方式给绕晕了.这里用一个优雅的面 ...
- 非交织YUV格式转换
本文为自己写的从非交织yuv420转换出yuv444,yuv422h,yuv422v和手动裁剪422h,422v图片的代码 #include <fcntl.h> #include < ...
- jquery简单插件写法
(function($){ /** * 遮罩插件 * 使用:$('#id').qloading(options); * 详见:/plugins/_11_qloading/qloading.html * ...
- OpenSSL 1.0.2e 3 Dec 2015
目录: 1,交叉编译openssl 2,win32 vc9 编译 openssl 1,交叉编译openssl [原]交叉编译openssl不修改Makefile的方法 http://blog.chi ...
- JavaScript 数组
JavaScript 数组 简介:数组是值的有序集合,JavaScript在同一个数组中可以存放多种类型的元素,而且是长度也是可以动态调整的,可以随着数据增加或减少自动对数组长度做更改. 一:创建数组 ...
- spring动态代理
接下来我们来体会下动态代理带给我们的便利 package aop006; public interface Girl { public void KFC(String datetime); publi ...
- STM32之看门狗(独立与窗口)
广大的互联网网友们,大家早上中午晚上好,我是某某某..对于狗..看过<忠犬八公>的我.无不深深的被狗的义气与灵气所震撼..我也觉得在所有mcu中用看门狗来形容让系统复位的功能是很恰当的.也 ...
- Probe在性能测试中的使用方式简介
简介: Lambda Probe(以前称为Tomcat Probe)是一款实时监控和管理的Apache Tomcat实例的基本工具. Lambda Probe 是基于 Web + AJAX 的强大的免 ...
- git 常用操作命令
A. 新建Git仓库,创建新文件夹git init B. 添加文件到git索引git add <filename> --- 单个文件添加git add * --- 全部文件添加 C. 提 ...
- Devexpress Ribbon
http://www.cnblogs.com/liwei81730/archive/2011/12/21/2296203.html 可查看此处.