标签:搜索 使用 util 表达 管理 例子 复用 大量 zookeeper
代码的可读性,可维护性是衡量代码质量非常重要的标准。
代码足够简单,就意味着容易读懂,bug比较难隐藏。
同一个功能,一段代码使用的复杂的技术,比如正则,代码量最少;一段代码使用简单的工具类代码量次之;一段代码自己实现逻辑代替工具类,代码量最多;
使用正则增加了代码的维护成本,同时写出没有bug的正则也不是一件容易的事。不是简单的代码
全部自己实现逻辑,可读性不高,不是简单的代码
使用简单的工具类,中等量的代码是简单的代码。
对于复杂的问题,用复杂的方法解决,并不违背KISS原则。看是否符合KISS原则,是对具体问题而言。
在做开发的时候,一定不要过度设计,不要觉得简单的东西就没有技术含量。实际上,越是能用简单的方法解决复杂的问题,越能体现一个人的能力。
比如,我们的系统暂时只用 Redis 存储配置信息,以后可能会用到 ZooKeeper。根据 YAGNI 原则,在未用到 ZooKeeper 之前,我们没必要提前编写这部分代码。当然,这并不是说我们就不需要考虑代码的扩展性。我们还是要预留好扩展点,等到需要的时候,再去实现 ZooKeeper 存储配置信息这部分代码。
再比如,我们不要在项目中提前引入不需要依赖的开发包。对于 Java 程序员来说,我们经常使用 Maven 或者 Gradle 来管理依赖的类库(library)。我发现,有些同事为了避免开发中 library 包缺失而频繁地修改 Maven 或者 Gradle 配置文件,提前往项目里引入大量常用的 library 包。实际上,这样的做法也是违背 YAGNI 原则的。
从刚刚的分析我们可以看出,YAGNI 原则跟 KISS 原则并非一回事儿。KISS 原则讲的是“如何做”的问题(尽量保持简单),而 YAGNI 原则说的是“要不要做”的问题(当前不需要的就不要做)。
判断是否重复需要看三个方面:
当语义不同的时候,哪怕逻辑一样,不能重用代码,比如:校验用户名和校验搜索词,可能在逻辑实现上一致的。但是语义不同,不能重用
当功能语义重复的时候,实现逻辑可能不同,也需要注意查看是否可以进行代码复用,语义重复的代码是最容易在后期维护的时候造成bug的地方。
当代码的执行调用前后有重复的时候也需要进行代码的整理,去除重复的代码。
我们在第一次写代码的时候,如果当下没有复用的需求,而未来的复用需求也不是特别明确,并且开发可复用代码的成本比较高,那我们就不需要考虑代码的复用性。在之后开发新的功能的时候,发现可以复用之前写的这段代码,那我们就重构这段代码,让其变得更加可复用。
相比于代码的可复用性,DRY 原则适用性更强一些。我们可以不写可复用的代码,但一定不能写重复的代码。
标签:搜索 使用 util 表达 管理 例子 复用 大量 zookeeper
原文地址:https://www.cnblogs.com/jinlin/p/12073143.html