GanttApp 前传:臃肿的代码
2008-09-02 02:16
176 查看
晚上离开实验室的时候,甘特图(GanttForm.cs)的代码已经膨胀到1400+行(最近在VS2005下基于Dundas Chart控件做甘特图显示)。随着功能的增加,迟早会落得个大胖子。
除了实现项目要求的功能,还可以做些什么呢?答案是肯定的。最简单的,常用VS2005自带的重构工具对重复出现的语句做些 提取方法 的工作等等......但这还远不能使代码变得精巧漂亮。
先得理清程序的结构。哪怕是个小程序,简单的模块,也应该有个清晰健壮的架构,麻雀虽小,五脏俱全嘛。甘特图模块粗略可分成数据显示和数据处理两块。至于他俩之间怎么打交道,就是得好好想想的问题。编码时常常会图一时方便,全局变量就满天飞了,如果命名规则诡异(有些个命名不仅方法过时,甚至中英混血)就更让人头疼了。就像新装修的房子,墙上全是飞线。后续的编码过程中也就难免有“牵一发而动全身”的情况出现。慎用全局变量,把数据约束在合理定义的接口中。好处不言而喻了,适当的分离,有效的聚合已经出现在还不能称得上面向对象的程序代码中,使复用成为可能。
除了实现项目要求的功能,还可以做些什么呢?答案是肯定的。最简单的,常用VS2005自带的重构工具对重复出现的语句做些 提取方法 的工作等等......但这还远不能使代码变得精巧漂亮。
先得理清程序的结构。哪怕是个小程序,简单的模块,也应该有个清晰健壮的架构,麻雀虽小,五脏俱全嘛。甘特图模块粗略可分成数据显示和数据处理两块。至于他俩之间怎么打交道,就是得好好想想的问题。编码时常常会图一时方便,全局变量就满天飞了,如果命名规则诡异(有些个命名不仅方法过时,甚至中英混血)就更让人头疼了。就像新装修的房子,墙上全是飞线。后续的编码过程中也就难免有“牵一发而动全身”的情况出现。慎用全局变量,把数据约束在合理定义的接口中。好处不言而喻了,适当的分离,有效的聚合已经出现在还不能称得上面向对象的程序代码中,使复用成为可能。
相关文章推荐
- 混淆代码问题之没有jar包的解析Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRel
- APP开发之一splash模板代码
- 分享实现类似QQ的自动登陆的方法,代码比较简单,主要是给大家提供一个实现逻辑,具体的要结合自身的app来做
- 几行代码,让你的app动感起来--Android Design Support Library使用
- C#加密app.config中连接字符串的代码
- MFC中去掉untitledvoid CMainFrame::OnUpdateFrameTitle(BOOL bAddToTitle) { // TODO: 在此添加专用代码和/或调用基类 if (theApp.m_pDoc->GetTitle().GetLength() < 1) { CString szAppName; szAppName.Format(AFX_IDS_APP_T
- Android App应用调用已安装市场,进行软件评分的功能代码实现
- 代码目录 (App_Code 目录)及namespace的理解
- django-cms 代码研究(八)app hooks
- SharePoint 2013 代码创建应用程序目录(App Catalog)
- Android中利用App实现消息推送机制的代码
- APP开发实战138-代码封装
- Android APP代码混淆proguard和加固
- 监听用C/C++代码监听App是否被卸载
- App源码分享大赛精彩代码赏析
- php代码部署于sinaapp之数据库连接
- App工程结构搭建:几种常见Android代码架构分析
- COCOS2D-X编译成安卓APP添加友盟统计和百度广告的代码示例
- Android APP工程结构搭建:几种常见Android代码架构分析
- 使用Node.js 和 MongoDB 为app搭建后端简单教程 附代码