m0_45240527 2024-08-04 16:03 采纳率: 0%
浏览 12

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

大家好,我是一个刚入行的程序员。我现在在工作中遇到了一些问题。我所写的代码可以满足客户的需求,客户对我开发的功能也验收通过了。但是与我一组的同事总是喜欢重构我的代码,他总是感觉我的代码有问题,感觉我的代码不够简洁。下面是我的代码,与他的代码的对比。
这些代码是我们项目中的一些实体类。此处的情景是,用户会根据业务需要生成邮件。并在需要发送时,用户发送已生成的邮件,同时在系统中会生成相应的历史记录。
我对此功能的设计是,在数据库中放着名为email和emailhistory的两个表,分别用于存放生成了但还没发送的邮件以及已经发送的邮件的历史记录。邮件生成后会存储在email数据表中,在邮件被发送后,会从email数据表中将相应的数据删除,并将之前的数据重新存储在emailhistory数据表中。(我这样设计的原因是,Email数据表在我接手这个项目之前就已经存在了,是我们组里别的同事写的,而我在接手了这个功能之后,客户提出了一些新的业务需求。原来在发送信件时,就是将email数据表中的相应数据给删掉。我在编程时一向希望尽可能的减少对原来程序结构的改动,所以我新增了一张表,进行了上述的设计。)
重构我代码的那位同事的设计是对原有的email数据表进行修改,他将我两张数据表中的所有的列全都整合到email数据表中了,同时,还将原有的程序改为在发送信件之后不删除相应的数据,而是改变其processStatus属性,设置其值为未发送,发送失败,已发送。

针对这两种设计,我有以下问题,:
1.大家感觉我的同事对此功能的设计和我对此功能的设计哪个更好呢?哪个更能被大家所接受呢?
2.我同事的设计会不会导致随着使用时间的增加,Email数据表的数据内容变得越来越多,到时候再需要从email数据表中取数据去对未发送的邮件以及邮件的历史记录进行操作时,导致相应的操作变得很慢进而影响性能呢?我的设计虽然让数据库中多了一个数据表,让后端代码多了一系列的程序文件,但是我觉得我的设计可以使上述操作变得更加快,而且也方便程序员对这两部分的数据进行管理。
3.我在编程时总是希望能够尽可能的减少对原来的程序结构的改动。请问我这种思想是一种对的思想吗?我在接手别人写过的程序代码时,我怕我的改动会导致别人不高兴。请问我在后续的工作中是否还应该保持着这种思想呢?还是说我在编程时要尽可能的以代码的简洁,和系统的运行效率为主导呢?

希望大家们可以不吝赐教

以下是我编写的代码

publie class Email{

private int Id;

private String senderId;

private String mailType;

private String title;

private String to;

private String cc;

private String bcc;

private String body;

private String creationDate;

}

publie class EmailHistory (

private int Id:

private String senderId;

private String mailType;

private String title;

private String to;

private String cc;

private String bcc;

private String body;

private String creationDate;

private String processStatus;

private String sentDate
}


以下是我的同事重构的代码


publie class EmailFinalVersion{

private int Id;

private String senderId;

private String mailType;

private String title;

private String to;

private String cc;

private String bcc;

private String body;

private String creationDate;

private String processStatus;

private String sentDate;


}
  • 写回答

3条回答 默认 最新

  • 专家-司宇[在线] 2024-08-04 16:03
    关注

    引自免费微信小程序:皆我百晓生

    关于你的问题和代码,以下是我的分析和建议:

    1. 关于设计选择:

      • 你和你的同事的设计各有优劣。你同事的设计将邮件的所有信息整合到一个表中,简化了数据管理,减少了表的数量,可能更容易维护。但这也可能导致数据表过于庞大,影响查询性能。你的设计通过分离邮件和历史记录,使得数据管理更为清晰,但可能增加表的维护和管理复杂性。选择哪种设计取决于具体的业务需求、团队经验和开发成本等因素。通常情况下,保持设计的简洁和高效是一个好的原则。你可以与团队其他成员讨论这两种设计的优缺点,并考虑项目的长期需求,做出决策。
    2. 关于性能问题:

      • 对于你同事的设计,确实可能存在随着数据增长查询性能下降的问题。如果邮件数量非常大,查询未发送的邮件或历史记录可能会变得较慢。但对于你的设计,虽然增加了表的数量,但适当的索引和优化也可以保证查询性能。在实际应用中,你们可以通过对数据库表进行适当索引、优化查询语句等方式来确保性能。此外,定期的数据清理和归档也是保持性能的有效手段。
    3. 关于编程思想:

      • 在编程时,一方面确实需要尽量减少对原有程序结构的改动,这有助于降低风险和维护成本。另一方面,当遇到业务需求的改变时,也需要考虑如何更有效地满足这些需求。在某些情况下,为了代码的简洁和系统的运行效率,可能需要适度调整原有的程序结构。你的初衷是避免对原有代码的过度改动,这本身是一种值得尊重的编程思想。但在实际项目中,也需要根据实际情况进行权衡和调整。

    关于代码部分,我发现你的Email类和EmailHistory类的定义中存在一些语法错误和拼写错误。例如,“publie”应该是“public”,字段定义后面应该使用分号“;”等。修正后的代码应该如下:

    你的代码:

    public class Email {
        private int Id;
        // 其他字段定义...
    }
    
    public class EmailHistory {
        private int Id;
        private String processStatus;
        private String sentDate;
        // 其他字段定义...
    }
    

    你同事的代码:

    public class EmailFinalVersion {
        private int Id;
        private String senderId;
        // 其他字段定义,包括processStatus和sentDate
    }
    

    总的来说,你和你的同事的设计各有优缺点,需要根据项目需求和团队经验进行权衡。在编程时,既要考虑对现有代码的尊重和维护,也要考虑如何更有效地满足业务需求和保证系统的运行效率。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 8月4日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见