The gap between (As-Is, To-Be) regarding domain modeling, only covering semantic code rot.
代码腐化(code rot)相关内容可以用分类树来归纳:
- 静态时/设计态
- 语法(syntax)层:rule/pattern based tools widely accepted
- Sonar/Checkstyle/lint/FindBugs/schemaspy/IDEA Inspections/JDepend/Facebook infer/Google ErrorProne/ArchUnit/etc
- Halstead 复杂度,方法长度,类长度,类数量,类/方法被引用次数,Statement密度分布,注释密度,etc
- 安全漏洞扫描/dependency risk
- 微服务间依赖关系:衡量切分的合理性,但尚无开源工具,需要自研,低难度
- 语义(semantics)层:目前基本靠review等人肉/非技术手段
DDDplus 逆向建模的主战场
- 例如:(一词多意,多词一意)如何识别,经测试GPT4也无法准确识别
- 例如:工具只能判断注释的完备性,却无法判断一致性、准确性、充分性、不必要性
- 动态时/运行态
- 系统的可观测性、performance risk/evaluation
- unplanned traffic risk
- incomplete FEMA design
- 运行时覆盖率/never executed code blocks
- 过程时
主要依靠git analysis
- (code commit, merge conflict) hotspot
- file ownership metrics
- branch leading time before being merged/commit size
- 管理视角
- 线上故障
- 技术债墙/排期/过程追踪:如何定义和排序技术债是关键
- design review质量
- code review质量:主要依靠(简单的数量,历史趋势分析,采样人工分析验证)
根据论文检索,被研究次数排名top 10的代码坏味道:
- Feature envy
- Long method
- God class
- Data class
- Duplicated code
- Refused bequest
- Blob class
- Shotgun surgery
- Long parameter list
- Spaghetti code