浅谈“多人合作”开发项目注意项

558 阅读2分钟

情景一 :你接手了老代码【屎山】,在这个基础上开发新功能。发现在原有的代码上扩展,难度太大!至此,在开发之前,你需要先修改重构原来的代码。痛苦~~~。

  • 版本 1.0 :根据 userId 获取用户信息
// A 开发
function getUserInfo(userId) {}

// B开发
function getUserInfo({ userId }) {
  let { userId } = data;
}
  • 版本 2.0 :根据 userId 和 cropid 获取用户信息
// A 开发
function getUserInfo(userId, cropid) {}

// B开发
function getUserInfo(data) {
  let { userId, cropid } = data;
}

仔细观察,上面的代码貌似没有多大的区别。但是注意传参变化。两个版本都可以实现现有的需求。但是我们想想,假如 版本 3 还需要其他参数呢?按照 A 开发的思路,还要继续添加。这里面隐含了一个必要条件:「参数顺序」。而 B 开发的开发思路,仅仅是在传参对象中增加属性。是函数内部可以通过解构赋值快速获取对象的值。

你是想在哪个开发的代码基础上迭代版本 4 呢? 我想大多数人都会选择 B 开发的代码上继续迭代。

再说几个屎山代码吧:

//  B代码: 嵌套多层【大于2层】if
if(a>0){
  if(b<0){
    if(c==0){
      ....
    }
  }
}
// 代码: 

以上两种代码,可读性和可扩展性都大打折扣。我想谁遇到都会说一句:F U C K !

那么,为了避免别人远程问候,我们应该怎么做呢?

1.给自己和别人留点余地【可扩展性】

场景1: 函数传参,大于2个,使用对象。

function getUserInfo(data) {
  let { userId, cropid } = data;
}

场景2: 多重判断,使用短路运算符

if(hasUser&&hasToken){
  ...
}

if(hsaRole||hasToken){
  ...
}

场景3: 多种场景判断,使用map或对象映射

let userInfo = {
  user1: {
    age: 20,
  },
  user2: {
    age: 25,
  },
};
let getUserAge = (username) => userInfo[username].age;
let age = getUserAge("user1");
console.log("age", age);

场景4: 类似函数调用,灵活使用字符串拼接

class Fun {
  fun1() {
    console.log("fun1 log");
  }
  fun2() {
    console.log("fun2 log");
  }
}

let key = 1;
let targetfun = `fun${key}`;
console.log("targetfun", targetfun);
let fn = new Fun(); //fun1
fn[targetfun](); //fun1 log

说明:这种函数调用,在vue开发中【新创建的对象就是 this 】非常好用。特别是组件封装,表单项校验。可以省去很多冗余代码。

2. 代码提交注意事项

2.1 个人开发分支定时同步总体的开发分支。个人分支合入总体开发分支前本地先合并解决冲突。要是多人修改了同一个文件,冲突不好解决,不能单纯的“以我为准”。这样,绝对会有人问候你的。

2.2 开发代码时,保证 自我负的部分的 “正常运行”。如果需要引用别人开发的代码,发现问题,优先提示对应模块负责人修改。不要自我感觉良好去修改。

未完待续。。。