m0_45240527 2024-08-24 18:10 采纳率: 0%
浏览 6

一个工作两年程序员的问题

原来的代码

public String calculateData(A a, B b){
//在此过程中,只使用了a对象中的两个属性以及b对象中的一个属性。
}

现在的代码

public String calculateData(String firPropFromA, String secPropFromA,  Sting propFromB){
//逻辑与上面函数一样
}

大家好,我是一个刚入行两年的程序员。我最近在开发时遇到了下面这个问题。

我所编写的一个函数,被我的同事给重构了。重构的具体修改的地方,就像上面所展示的两段代码一样。我们的内部逻辑是一样的,但是我传进函数里面的参数是两个对象,而他传进函数里面的参数是三个字符串。在函数体中,真正被使用的部分其实就是这三个字符串,传进去的那两个对象的其他属性都没有被使用。我当初直接将两个对象传进去,而不是将所使用到的三个属性传进去,是因为我感觉直接将两个对象传进去,方便在日后的修改。

在以后想要修改时,如果使用到了那两个对象中的其他属性,到时候就可以在函数体中直接调用,而不是还得改参数,毕竟这个函数,它如果在多个地方都被使用的话,那么改参数时还得在多个地方进行修改,不是特别的方便。我当时就是考虑可扩展性,所以才这么写的。

大家觉得我的写法与我同事的写法哪个更好呢?我们在开发中,如果想要更好地保证程序的可扩展性,我们应该怎么办呢,大家有没有什么好的提议呀?

  • 写回答

2条回答 默认 最新

  • 吃不了席 2024-08-24 18:11
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在这种情况下,两种写法都有其优缺点。你的写法确实在扩展性方面有一定的优势,因为你可以直接使用对象的属性,而不需要修改函数的参数。然而,这种写法可能会导致代码的耦合度较高,因为函数依赖于特定的对象结构。

    你同事的重构方法将参数改为了字符串,这样可以降低代码之间的耦合度,使得函数更加通用。当你需要修改或扩展功能时,只需要修改函数内部的实现,而不需要更改函数的参数列表。这种方法更符合单一职责原则,即一个函数应该只做一件事情。

    为了保持程序的可扩展性,你可以考虑以下几点:

    1. 遵循单一职责原则:确保每个函数只负责一项具体的任务。
    2. 使用接口和抽象类:通过定义接口或抽象类,可以降低代码之间的耦合度,使得函数可以处理不同类型的对象。
    3. 封装变化:将可能发生变化的部分封装起来,例如数据库连接、配置文件等,以便在需要时可以轻松地进行修改。
    4. 编写单元测试:为每个函数编写单元测试,以确保在修改代码时不会引入新的错误。
    5. 使用设计模式:学习和使用一些常用的设计模式,如工厂模式、策略模式等,可以帮助你更好地组织代码,提高可扩展性。

    总之,选择哪种写法取决于你的具体需求和项目规模。在某些情况下,保持代码的耦合度较低可能更为重要,而在其他情况下,保持代码的可读性和易用性可能更重要。在实际开发中,你需要根据具体情况权衡各种因素,以找到最适合的解决方案。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月24日

悬赏问题

  • ¥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局部变量对蓝图不可见