12丨组织好代码文件,要有“用户思维”
该思维导图由 AI 生成,仅供参考
逻辑之一:软件是干什么的?
- 深入了解
- 翻译
- 解释
- 总结
本文从“用户思维”出发,探讨了如何以用户为中心组织代码文件的关键观点。首先,强调了README文件的重要性,清晰描述软件用途;其次,版权和许可证的管理至关重要,建议在根目录下放置COPYRIGHT和LICENSE文件;另外,提出使用命名空间的区隔和测试代码与功能代码的分离;最后,强调测试文件应执行独立任务,组织方式应与功能代码相照应。这些观点为读者提供了以用户思维为出发点的代码文件组织方式,有助于提高代码的可读性、可维护性和质量。文章还强调了软件文档的重要性,应随软件变更不断升级维护,并建议代码和文档统一管理。最后,鼓励读者分享项目文件组织经验,并学习他人经验,共同进步。
《代码精进之路》,新⼈⾸单¥59
全部留言(13)
- 最新
- 精选
- MOV AX,0公司项目模块的大致结构: build/ src/ main/ java/domain.parent.module/ constants/ entity/ dao/ mapper/ service/impl/ facade/impl/ job/ utils/ resources/ META-INF/ dubbo/ spring/ app.properties log4j.properties /test/java/domain.parent.module/ dao/ service/ facade/ job/ utils/ TestBase.java deploy.properties jenkinsfile pom.xml 不经意间已经习惯这种结构了。很多东西用的时候很顺,以致于都察觉不到它的好处。看老师的文章感觉非常亲切,也收获了很多!
作者回复: 谢谢你分享这个典型的代码文件组织结构。
2019-01-3128 - Y024作为 Javaer,分享一些自己接触到东西。目前很多都有脚手架工具,可以帮你快速初始化/规划项目代码组织,比如:Java 里面的 Maven,可以帮你快速初始化一个项目(Maven 生成的工程目录划分,具体细节移步官方文档:https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html)。 利用脚手架初始化完一个项目之后,涉及到了分层,一般会有类别(controller/web、service、dao 等)、业务模块(user、order 等)两个维度,看是先按照类别再按业务分层(如:controller/user、controller/order;service/user,service/order),还是先按照业务再按照类别分层(user/controller,user/service;order/controller,order/service),但一定不要两种风格混合。
作者回复: 好经验,谢谢分享! 类似于Maven的脚手架工具很有价值,我也建议大家了解了解。我个人特别喜欢它对代码依赖关系的自动化处理。第二部分,我们会使用一下这个小工具(不会讲,就是用一下)。
2019-01-313 - Beingdoc/ 需求文档(按功能模块分子目录)、各成员的日志记录(按项目节点分子目录)、UI设计 Source/ VS工程下的多个项目相关Project工程目录、基础库、test工程、Tools工程 ,.sln文件一般放在该目录,主要是VS IDE的组织方式 每个工程下就是会细分像老师说的src Product/ 一般还要分Debug/Release Win32/x64, 存放相应的exe生成文件以及依赖库 主要方便发布与测试 Versions/ 就是每个节点后发布的版本了,并记录依赖的相关部署环境等
作者回复: 嗯,看起来像是代码的上一层的组织方式,不仅包括代码,还包括编译后的文件,以及支持文件。
2019-01-303 - 老吴说到这个,老师能否加开一篇领域驱动的课
作者回复: 这是一个好话题,但是我现在真的不懂领域驱动。要加油学习了!
2019-02-261 - pyhhou自己使用的就是最简单的 MVC 的代码结构,写的是 node JS,不需要编译结构也是一些个工具帮忙生成的: bin/ node_modules/ public/ scripts/ src/ controllers/ helpers/ models/ routes/ tests/ .env app.js package.json package-lock.json 这里比较不好的是 tests 很难和 src 里面的东西一一对应,有时写着写着会把自己绕进去,不知老师有没有什么好的建议。还想请问老师的就是即便是在一个好的文件框架下,很多子文件的层级结构也还是得由我们程序员自己来设定,就比如一个功能可以由一个文件实现,也可以由多个文件协同实现,这里面有没有一些个比较好的实践,或者是可以借鉴的思想方法,使得即便是不看半句代码,光看文件名加文件结构就可以把设计思想以及代码功能看出个十之八九?
作者回复: 对应好源代码和测试案例,是一个省时省力的思路。JDK一般按照源代码的目录结构组织测试。比如,测试接口规范javax.net.ssl.SSLSocket的代码,放在test/jdk/javax/net/ssl/SSLSocket目录下。测试接口实现sun.security.ssl.SSLSocketImpl的代码,放在test/jdk/sun/security/ssl/SSLSocketImpl目录下。我们经常需要翻找测试用例,来检查测试覆盖是不是足够,这种对应的组织方式的确省了不少时间。 文件的安排,首先要做好模块的划分,功能类似的、目标类似的放到一个命名空间里(比如Java的包);然后,分割接口规范和内部实现;接口规范和内部实现放到不同的命名空间里;然后,再划分依赖关系,公开接口的文件,一个类一个文件;内部实现的代码,尽量减少文件间的依赖关系,只被一个类依赖的代码,都放到那个类里去。 比如,javax.net.ssl是TLS协议的公开接口规范,单独使用一个公开的包。sun.security.ssl是TLS接口规范的一个实现,单独使用另外一个包。sun.security.ssl.ClientHello类里,还包含了支撑这个类实现的其他几个内部类。 package sun.security.ssl; final class ClientHello { static final class ClientHelloMessage extends HandshakeMessage { // snipped } private static final class ClientHelloKickstartProducer implements SSLProducer { // snipped } // snipped } 另外,就是做好命名空间和类的命名,名字清晰了,从文件名和文件结构的确可以看到更多的东西。
2019-02-241 - 亦知码蚁上文图中那个make/是什么含义
作者回复: 放置makefile的目录
2019-01-301 - 进化菌一般项目代码都会有一套模块化的结构,习惯的将一些共同功能的文件放在一起。 而版权声明,对于公司内部的代码,似乎没有那么必要,因为没有对外开放的~
作者回复: 公司也要养成添加进版权的习惯。
2021-11-19 - 彩色的沙漠请问老师,我经常看到的github项目还是自己的项目都是把软件是干什么的和怎么使用放到了README文件,没有区分放到README和软件文档doc两个文件维护。
作者回复: 一些小的项目,README就能够承担这些责任了。
2019-05-07 - 小文很多网上的代码都没有版权说明,那也会受法律保护吗?
作者回复: 是的。这种代码的版权风险很大的,不知期限,不知版权归属,不知许可方式。有些法律默认没有版权说明,就是作者保留所有权利。
2019-02-18 - Lindroid总结: README:命名大写字母,放在根目录下,用于介绍软件的使用; COPYRIGHT:命名大写字母,放在根目录下,用于解释软件的版权; 源代码文件:src目录下,可再细分目录; 测试代码:需要和功能代码分开存放,可放在根目录的test目录下,一个测试文件最好执行一个独立任务; 文档:可以放在根目录的docs 或者 doc 的目录下。2019-04-192