我可以通过哪些方式编写易于修改的代码?
我从经验中学到的一点是,我几乎总是需要写一个扔掉。这样,我就可以在编写实际应用程序之前了解所需的领域知识和程序结构。
答案 0 :(得分:5)
一般指导原则是
哦,是的,是的。
请阅读:http://www.pragprog.com/the-pragmatic-programmer
上面的所有内容(我认为)都在其中
答案 1 :(得分:1)
我认为你对可修改性的强调比可读性更重要。让一些易于理解的东西并不难,但是当其他人(或你)必须根据不断变化的要求修改它时,才能真正测试它的理解程度。
我尝试做的是假设必须进行修改,如果不清楚如何进行修改,请在代码中留下明确的指示,以了解如何进行修改。
我认为我可能需要对代码的读者进行一些教育,以使他或她知道如何正确地修改代码。这需要我的能量,并且需要阅读代码的人的能量。
因此,虽然我很欣赏有文化编程的想法,但可以轻松阅读和理解,有时它更像是数学,其中唯一的方法是让读者理解,密切关注,重新阅读几次,并确保他们理解。
答案 2 :(得分:1)
我在分配改变网络界面外观的任务时很早就学到了这一点。代码在C中,我讨厌,并编译成CGI可执行文件。而且,更糟糕的是,它建立在一个被遗弃的图书馆 - 没有更新,没有支持,以及太多的工时用于改变它。在框架的顶部是一个无序的代码网络,包括各种形式和元素构建器,自定义字符串实现,以及各种其他神秘的东西(非C程序员自杀)。
对于我所做的每个更改,输出HTML都有几个,有时很多例外。这些异常中的每一个都需要在表单构建器中进行一些小的更改或改进,这要归功于语言没有继承,因此只有函数和结构,而不是将小时数放在团队中而是经常编写这些异常。
在我缺乏经验的情况下,我被迫改变每个异常的输出,而不是在改进的表单构建器中合并更改。但是,在无效的变化之后拖曳15,000行代码几个小时就会导致代码烧毁,并且需要一夜的睡眠才能治愈。
始终通过DRY-er运行您的代码。
答案 3 :(得分:0)
修改代码的最简单方法是不编写代码。编写伪代码不只是为了算法,而是如果您不确定如何构建代码。
在编写代码时进行设计永远不会有效...对我来说:-)
答案 4 :(得分:0)
以下是我目前的经验:我正在使用一种可能经常更改的数据库架构(Java),这些架构可能经常更改(添加/删除字段,修改数据类型)。我的策略是解析此架构并使用apache velocity生成代码。生成的BaseClass
永远不会被程序员修改。否则,创建MyClass extends BaseClass
并且使用超类的'getters'和'setters'来实现该类的逻辑组件(例如toString()!)。
答案 5 :(得分:0)
可读性有很大帮助:如果你做了一些非显而易见的事情,或者你正在采取捷径,请发表评论。如果您以后有时间,评论是您可以返回并重构的地方。为所有事物使用合理的名称,使其更容易理解正在发生的事情。
持续修订将让您从初稿转移到更好的草案而不会丢失(太多)工作。无论何时从头开始重写,您都可能失去经验教训。在编写代码时,使用重构工具来消除代表不再需要的探索区域的代码,并使明显的事情变得模糊不清。第一个减少了您需要维护的数量;第二个减少每平方英尺的努力。 (Sqft确实和代码行一样有意义。)
适当地模块化并在模块之间强制执行封装和逻辑分离。您不希望对代码的任何一部分有太多依赖,或者该部分本身难以理解。
考虑使用经过验证的方法而不是尖端方法。你放弃了一些可预测性的功能。
最后,如果这是人们将在修改之前和之后使用的代码,那么您需要(ed)拥有一个适当的API来隔离您的代码。拥有强大的API可让您在幕后更改内容,而无需提醒所有消费者。我认为关于Coding Horror的文章很不错。