In defense of not understanding your codebase15 days agohttps://www.seangoedecke.com/in-defense-of-not-understanding-your-codebase/文章认为,在大型软件系统中,对代码库仅有部分理解是可接受的,且通常是必要的。它对Peter Naur的‘编程即理论构建’提出批评,指出由于复杂性,从零开始重建大型系统是不切实际的,而通过逐步学习可以使废弃系统复活。作者建议大型团队中的工程师必须在有缺陷的心理模型下工作,做出有根据的猜测并应对后果。文章讨论了权衡,指出团队流动、法律要求和依赖关系等因素可能阻碍保持完整的代码理论。文章总结道,虽然保持完整理论是理想的,但在专业环境中,速度或合规等其他价值可能优先考虑。
In defense of not understanding your codebase4 hours agohttps://seangoedecke.com/in-defense-of-not-understanding-your-codebase/软件工程师对代码库的理解有不同的看法:小型、低人员流动率的团队主张完全理解,而大型、高人员流动率的团队则接受部分理解。彼得·诺尔(Peter Naur)的'编程即理论构建'认为代码是程序员'程序理论'的副产品,但他的结论——当理论丢失时应该丢弃代码——对大型系统而言不切实际。由于无数细微特性,大型软件系统无法从头重建;重写必须通过逐步拆分小块进行增量式完成。即使没有原始团队成员,工程师也可以从单一流程开始,逐步扩展理解,从而复兴被遗弃的代码库。在足够大的代码库中,每个人都带着部分错误的理论运作;有效性需要做出有根据的猜测并处理后果。维护代码库理论只是众多工程价值之一,常常为了速度、法律合规或其他优先事项而权衡。大型语言模型阻碍了详细理论的构建,但能快速提供部分理论并实现有效的借力,代表了复杂的权衡。阻碍理论维护的其他因素包括团队人员流动、法律要求、安全补丁和依赖项。