简单的招式练到极致就是绝招,细节做到极致就是创新。
能从零开始参与一个项目的开发无疑是一件幸运的事。但是作为一名开发者,我们更多遇到的是项目的迭代与更新。
在项目趋于稳定,代码功能趋于健壮的时候程序猴们就可以考虑项目优化了。本文就结合本人目前正参与开发的项目从“工程结构/目录”
这一细节出发共同探讨项目优化
这门必杀技!
说到工程结构/目录,通俗一点说我们讲究结构,高大上一点是我们追求架构。
工程结构/目录
是属于可读性和可维护性
的范畴,我们设计一个层次清晰的结构/目录,就是为了达到以下两点:
-
可读性强:不熟悉这个项目的代码的人,一眼就能看懂,通过UI捋代码,通过代码调UI都能轻而易举。
-
可维护性高:定义好组织规则后,维护者就能很明确地知道,新增的哪个文件和代码应该放在什么目录之下。这个好处是,随着时间的推移,代码/配置的规模增加,项目结构不会混乱,仍然能够组织良好。
一、项目概述
作为一个证券类App,君弘在总体结构上跟广大友商并没有什么明显区别,五个TabbarItem分别对应发现
、行情
、交易
、理财
、我的
五大模块。项目整体采用组件化开发,各模块完全独立,项目中大牛众多技术较为成熟,实在是无处置喙。
二、本模块现状
本人有幸于19年十月加入国泰,参与发现页改版需求开发。抛开顶部搜索栏、选项卡以及君弘在线平行直播间,发现页首页通过PageView囊括了机会
、关注
、实时
、服务
、学堂
五大模块。为了提高效率,力求在年前测试通过并上线,几名同事各负责其一。
工程的结构/目录与设计模式相辅相成,关于设计模式的探讨且听下回分解,这里主要就本模块主要采用的MVC进行分析。
在本次改版需求的具体开发过程中,通过代码Review等方式发现了类似下图的问题:

- 1、创建目录文件夹时图一时之便不考虑现有结构(当然现有结构不够清晰,代码捋起来难度较大也是一个原因),导致整体结构冗余。
- 2、ChanceView很可能复用了View中的控件、ChanceTools很可能用到了Tools中的方法等,当项目代码较少时问题不明显,当分支够多时代码追踪、文件位置锁定会变得非常困难。
- 3、Chance可能会用到Attention中的某一个Model类,但是Attention文件夹中有很多Model类是改版之后废弃不再使用的,这样会增加后期维护代码时删除冗余代码的难度。
三、优化建议

- 1、严格遵守MVC设计模式。
M
、V
、C
定义好目录文件,后续新建文件严格按照要求分门别类,让代码“有迹可循”。 - 2、需求开发时,更新迭代造成的废弃方法、文件应及时备注,在代码Review的时候定时清理,避免冗余代码,也避免错误引用。
- 3、文件名要清晰明确,尽量做到望文生义,避免歧义或混淆。
- 4、指定注释模板,重要文件添加固定格式注释,方面全局搜索。
四、总结
万变不离其宗,工程的结构/目录优化从本质上是为了提高代码的可读性和可维护性。在日常开发过程中多思考,多自省,遇到问题及时反馈和解决,优化项目提升自己。
创业难,守成亦难。项目稳定难,稳中求优亦难。天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。在项目优化的道路上,我辈当上下而求索!
网友评论