作者回复: 谢谢你分享这个典型的代码文件组织结构。
作者回复: 嗯,看起来像是代码的上一层的组织方式,不仅包括代码,还包括编译后的文件,以及支持文件。
作者回复: 好经验,谢谢分享!
类似于Maven的脚手架工具很有价值,我也建议大家了解了解。我个人特别喜欢它对代码依赖关系的自动化处理。第二部分,我们会使用一下这个小工具(不会讲,就是用一下)。
作者回复: 这是一个好话题,但是我现在真的不懂领域驱动。要加油学习了!
作者回复: 对应好源代码和测试案例,是一个省时省力的思路。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
}
另外,就是做好命名空间和类的命名,名字清晰了,从文件名和文件结构的确可以看到更多的东西。
作者回复: 放置makefile的目录
作者回复: 一些小的项目,README就能够承担这些责任了。
作者回复: 是的。这种代码的版权风险很大的,不知期限,不知版权归属,不知许可方式。有些法律默认没有版权说明,就是作者保留所有权利。