極趚蝸牜 发表于 2021-3-22 10:18:08

请教,这两个代码,哪个更合理?

这两个代码,哪个更合理?哪个更容易维护?
如果要保证每个方法不超过20行,造汽车1比较好。但是方法太多,调来调去,跳来跳去,好像也不易阅读。
造汽车2一个方法的代码可能上百行,但只要一个方法。虽然感觉压力很大,但是想象成读文章,好像也合理。而且可以用注释把代码分段。
public class 造汽车1 {
   
    public void 造一辆汽车() {
      采矿();
      把矿做成原料();
      把原料做成零件();
      把零件组装成汽车();
      出厂前检查();
    }
   
    private void 采矿() {
      System.out.println("采矿");
    }
   
    private void 把矿做成原料() {
      System.out.println("把矿做成原料");
    }
   
    private void 把原料做成零件() {
      System.out.println("把原料做成零件");
    }
   
    private void 把零件组装成汽车() {
      System.out.println("把零件组装成汽车");
    }
   
    private void 出厂前检查() {
      System.out.println("出厂前检查");
    }

    public static void main(String[] args) {
      new 造汽车1().造一辆汽车();
    }

}public class 造汽车2 {
   
    public void 造一辆汽车() {
      System.out.println("采矿");
      System.out.println("把矿做成原料");
      System.out.println("把原料做成零件");
      System.out.println("把零件组装成汽车");
      System.out.println("出厂前检查");
    }

    public static void main(String[] args) {
      new 造汽车2().造一辆汽车();
    }

}

迫不及贷 发表于 2021-3-31 13:58:12

这个要看你的是实际应用场景,这个造汽车的功能是否单一,如果只是单单设计一个类,能够按照步骤成功创建一个想要的对象,那么汽车2肯定更简单直接。但是如果考虑到以后的扩展以及和其他的类的关系,肯定汽车1的写法可操作性更强,灵活性与结合性都会更好

淮总 发表于 2021-3-31 18:05:11

两种代码结构,从可维护性上来看,当然是第一种优于第二种了。
第二种,所有功能的代码堆叠在一起,不但阅读会造成困难,变量在前后的使用上会产生严重的依赖,由于处理环节的增多,就很容易产生漏洞。
第一种,把核心处理过程拆分成五个阶段,每个阶段对应一个函数调用,如果楼主觉得阅读困难,那一定是处理过程的拆分存在问题,如果处理过程的拆分是合理的,阅读起来反而会更加的轻松(相比第二种写法)。
另外,一个大的处理过程,除了处理过程的拆分外,每个处理过程的处理环节,也会遇到拆分的情况。这样的话,我们会创建个多的类来有层次的拆分和处理。楼主如果想深入了解这方面的内容的话,推荐楼主看看设计模式里面的几种行为模式,就是教你不同场景下,怎样相对合理的拆分和组织代码的。

踏雪南辕北辙 发表于 2021-4-11 02:56:48

你这两种设计都不合格
要保证扩展性和低耦合每一个动作都要考虑指责比如采矿可以定义一个采矿的接口提供采矿方法每种矿的开采可能都不一样 需要实现类而造汽车需要哪种矿就引用那种矿的实现 执行采矿方法后面几个步骤类似.
造汽车类把控好操作步骤就够了 比如需要什么矿石用什么方式转换成原料 用什么方法做成零件? 中间可以穿插一些图纸类用单一指责让专门的类去做好了 其实造汽车类我们要定义成一个接口具体造什么汽车我们再一一实现

风雨榕树 发表于 2021-4-25 09:40:32

如果要可维护的话,不是简简单单的一个类能解决的,需要功能细分,甚至每个功能都是一个模块。
而且最好做成接口模式,这样优化的时候或者实现逻辑变化的时候,只要修改接口的实现类,其他都不需要改动,甚至可以通过配置决定到底是哪个实现类来实现这个功能。

为你筑城 发表于 2021-5-1 08:44:45

第一种更合理
方法名,
step101_采矿
    ---将来扩展102,103
step201_做成原料
step301
页: [1]
查看完整版本: 请教,这两个代码,哪个更合理?