m0_45240527 2024-08-10 18:01 采纳率: 0%
浏览 26

一位工作不到两年的程序员关于代码写法的问题

大家好,我是一个工作不到两年的程序员,我在项目的开发中遇到了一些问题,希望大家可以帮我解答一下。下面是两个与我问题相关的代码。

Public EmailTemplate editEmail ( EmailTemplate emailTemplate, Case case ) {
  //the code replaces the words in the email template
  Return emailTemplate;
}

Public EmailTemplate editEmailWithCorporateID ( EmailTemplate emailTemplate, Case case, String corporateId ) {
  //the code replaces the words in the email template,same with the first function
  List<Corporate>  corList  = corporateDao.getCorporateByCorporateName(case.getCorporateName()) ;
  For( Corporate item : corList ){
    If( item.getCorporateId()==corporateId ){
      //replace some words
      Break;
    }
}
Return emailTemplate;
}

这两个函数的传入参数与内部逻辑大体相同,唯一不同的地方就是下面的函数的多了一个名为“相关企业ID”的参数,多了使用该参数在多条重名的企业数据当中寻找具体的某一个企业的信息的逻辑。
之前代码里面只有上面的那个函数,我后来新增了下面的函数是因为客户新增了需求,原来只要求对邮件模板中的替换关键字进行替换,而现在又要求在存在重名的企业时,可以根据相关企业ID进行进一步确认,确保不会把生成的信件搞错。我为了能够在我新写的代码出错时能够及时回滚到之前的状态,就没有在上面的函数的基础上添加新逻辑,而是将上面的函数重新复制了一次,在下面的复制出来的函数中进行添加逻辑的操作,在写完新的函数后,再在调用这两个函数的上级函数之中添加一些处理逻辑,确保在需要的时候调用需要的函数。
我的同事认为我的代码这么写不对,因为我的代码不够简洁。他认为我只要把下面的函数保留就可以了,上面的不用留着,即使有不用的参数,我们也可以设置其中一个参数为空。至于出错回滚,完全可以使用git进行相关操作。他说的东西我当时由于项目需求紧急而并未注意,只顾着完成功能了。在完成功能后在自己的开发环境上测试没问题了之后,就给客户进行部署,让客户进行测试,客户测试通过了,我就并没有再进行任何操作了,也没有对这里明显存在重复问题的代码进行相应的简化操作。因为我怕出错。
他还问我为什么在前端只是在出现有重名数据时,让客户输入一个企业的ID然后在后端与重名的那堆数据进行比对,而不是将这些数据直接传到前端并生成一个下拉框供客户挑选。我说客户就这么说的,他告诉我客户并不懂技术,所以他们所说的东西在运行效率上并不是最佳选择,这就需要你自己进行相应的设计。

问题:
1.在开发阶段,编写的代码完成了客户要求的功能之后,是否应该再重新看一遍新增的代码,看看有没有什么地方可以简化呢,还是说代码在确保可以运行之后就不要动了呢?如果简化修改的地方涉及到了之前写好的功能,进而导致之前的功能也出了一些问题怎么办呢,我很害怕出现这种情况,因为怕这会影响我在客户心中的形象。所以我一般能不修改团队中其他同事的代码就不修改其他同事的代码。
2.客户提出的需求,说他们要怎么样的,我们程序员是否有必要自己再进行相应的设计呢?我一直觉得客户要什么样我就做成什么样,不去管程序运行效率等东西很好。因为这样一方面可以很好的在后续防止客户给自己甩锅,另一方面可以让客户觉得我很厉害,可以把他们需要的东西完全地实现。

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2024-08-10 18:02
    关注

    晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    1. 确保完成功能后再看新增代码是合适的。在编写完成后,您应该花时间检查并确定代码的质量和功能完整性。如果可能的话,最好先将其编译为可执行文件,并在测试环境中测试其正确性。只有当一切正常后,才应该考虑对代码进行修改。

    2. 客户提出的具体需求应由您来定义和设计。虽然您的编程能力很强,但是这并不能保证满足所有客户的需求。因此,您需要在了解客户的具体需求后,制定相应的设计方案和实现方案。

    代码修改建议: 在返回修改后的EditEmail 和 EditEmailWithCorporateID 函数内,都应包含查询企业的实际信息的逻辑,例如: public Corporate getCorporateById(String corporateId) { for(Corporal corporation: corporateList){ if(corporation.getId().equals(corporateId)){ return corporation; } } return null; }

    在处理重名的情况时,可以按照以下步骤:

    1. 检查是否有多个重复的企业ID。
    2. 如果找到多个重复的企业ID,则使用以下逻辑:
      • 遍历当前的数据集。
      • 对于每个企业:
        • 使用企业ID获取公司的名称(只需要命名、地址、电话号码等基本信息)。
        • 如果名称已存在于数据库中,则需要查找是否存在与之匹配的另一家公司名称。
          • 找到两家企业名字相匹配的企业后,返回对应的信息。
        • 如果没有发现两家企业名字相匹配的企业,则跳过此公司。
    3. 返回最后的结果。

    对于如何处理前后端之间的交互,您可以参考Java的最佳实践,例如使用Controller来管理请求和响应,以及在客户端显示界面。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月10日