12.1阅读笔记
这周读的《领域语言》和《需求之坑》两章,简直是对我近期痛苦经历的完美总结和升华。
1. 领域语言:让代码说“人话”
“程序员首先应该是一位沟通者”,这句话点醒了我。我们不仅要与机器沟通(写代码),更要与人沟通(包括未来的自己)。而领域特定语言就是最高效的沟通方式。
从CRUD到业务表达: 我的图书管理系统最初就是典型的“数据库增删改查”思维。我的方法名是add(), delete(), update(), find()。这没错,但很苍白。读了这一章后,我意识到我的代码应该反映图书管理这个领域的业务逻辑。
2. 需求之坑:倾听弦外之音
“挖掘需求”这一节让我恍然大悟。用户(或者我的课程老师)提出的“需求”,往往只是一个他们能想到的解决方案,而不是真正的问题。
3. 抽象与权衡
书中提到“抽象的能力,就是从具体细节中抽离出核心概念的能力”。学习Java的接口和抽象类,就是学习抽象。但抽象也要有度,过度抽象会让系统变得复杂难懂。我的原则是:等到第二次出现重复或变化时,再进行抽象。比如,在我只有内存存储时,我不急于抽象BookRepository;但当需要文件存储时,抽象就变得必要且自然了。
总结与联想:
这一章让我从“代码工人”向“问题分析师”的角色转变。优秀的程序员不能只做需求的传声筒,而必须成为需求的翻译官和合作伙伴。我们需要透过用户提出的“解决方案”,挖掘出背后的“核心问题”,然后用代码构建出既能准确表达业务领域、又具备技术弹性的解决方案。
浙公网安备 33010602011771号