前言
在软件开发的世界里,虽然技术日新月异,但有些原则是经久不衰的。就像建房子需要坚实的地基,软件开发也有其基础原则。它们像是指南针,帮助开发者在变化莫测的技术海洋中保持方向。接下来,我们就来聊聊这三个基本原则:DRY、KISS和YAGNI。
public class Calculator { // 堆代码 duidaima.com // DRY - 将加法逻辑提取到一个方法中,避免在多处重复 public int add(int a, int b) { return a + b; } // 其他操作也应该遵循DRY原则 public int subtract(int a, int b) { return a - b; } }
当项目涉及多方面的参与人员时,每个人都可能带来自己的关注点,这时候很容易忽视了用户的核心需求,就像厨师忙于展示烹饪技巧而忘记了食物是用来吃的。受限于过去的决策,我们可能会一直在现有的基础上打补丁,最终导致系统复杂难以维护,就像一个本来简单的土豆丝夹饼因为不断添加配料变得复杂而难以下咽。
public class SimpleTask { // KISS - 使用简单直接的方法来计算两个整数的和 public int add(int a, int b) { return a + b; } // 这个方法违反了KISS原则,因为它过于复杂 public int add(int a, int b) { // 使用一个数组来存储参数 int[] numbers = new int[2]; numbers[0] = a; numbers[1] = b; // 使用流来计算和,这在这种情况下是不必要的复杂性 return Arrays.stream(numbers).reduce(0, (subtotal, element) -> subtotal + element); } }YAGNI —— 未雨绸缪还是过度设计?
技术人员有时会被新技术吸引,就像看到新出的厨具就想买来试试,即使它们对于目前的需求并不必要。我们对未来的预测往往不准确,过度设计的功能可能最终成为累赘,就像买了太多食材最终导致浪费。
public class UserService { // 当前只需一个方法来添加用户 public int add(String userName,int age) { ... } // 不要预先添加额外的方法,例如删除用户,除非有明确的当前需求 // public double delete(int userId) { // ... // } }