敏捷开发松结对编程系列:L型代码结构案例StatusFiltersDropdownList(下)
这是松结对编程的第23篇(专栏目录)。
接上文,45分钟后……
新的筛选效果现在需要在下拉框上加上两排新的筛选项(更早和更晚):师傅本人可以在45分钟完成(实测),但如果直接交给徒弟维护(或师傅离开后维护),可能会发生以下问题:1. 以前的下拉框里边只有两排,现在要显示三排了,怎么办?2. 三排了,框框变宽,显示不下了怎么办?3. 以前的筛选条件是怎么写的?(希望改改就能写出新的来)
在非L型代码结构下,可能会寄希望与阅读DropdownListHtml接口:
由于L型代码结构写底层的人同时也写上层(所以才叫“L”型,而不是“三”型或“川”型),所以所有底层技术都是随需开发的。因而如果支持三列链接显示,一定能找到一个以前使用过的例子。这些例子可以大大缓解注释、文档缺少的问题,甚至可以说比注释和文档更有效。本人两年前学习C#以来,只买过1本C#的图书(后来因为几乎每看,就送人了),完全是按照一个大约130页的电子书上的案例完整开发了一遍,也就完成了入门工作。之后基本上遇到问题再搜Google或者Stackoverflow。L型代码结构其实想做的就是在企业内部完成类似的学习和使用过程。
完成后代码新增或改动代码手工在前面加了//比较醒目,因为代码太长了,所以又补充了几句注释。
如果之前的筛选是单独编码的,那么这2分钟就又变成4小时了——如果没有遇到什么Bug的话。总结1. 业务代码是那些上层的可能因业务升级而变更的代码。2. 业务代码中包含“做什么”而不包含“怎么做”。由于业务升级只涉及“做什么”,因此只需要修改业务代码。3. L型代码结构利用公共的技术底层来搭建业务代码。由于L型代码结构的底层是因需产生的,因此在重用时有很多现成的“例子”来代替或因此可以减少文档和注释的数量。3. 新手/新人/徒弟看完业务代码后,应该能够进行“业务维护”以实现新的业务要求,这是业务代码编写的第一原则;能进行“技术维护”是更高水平的人的事情。实际上,很多代码因为为了让新手/新人/徒弟看懂怎么实现的,而令他们很难维护,是舍本逐末的做法。
如何让新手学习、练习以得以进步的内容不在本文范围内(在同系列中有大量描述)。