小白教程

 找回密码
 立即注册
查看: 8222|回复: 5

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

[复制链接]

1

主题

2

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2021-3-22 10:18:08 | 显示全部楼层 |阅读模式
这两个代码,哪个更合理?哪个更容易维护?
如果要保证每个方法不超过20行,造汽车1比较好。但是方法太多,调来调去,跳来跳去,好像也不易阅读。
造汽车2一个方法的代码可能上百行,但只要一个方法。虽然感觉压力很大,但是想象成读文章,好像也合理。而且可以用注释把代码分段。
  1. public class 造汽车1 {
  2.      
  3.     public void 造一辆汽车() {
  4.         采矿();
  5.         把矿做成原料();
  6.         把原料做成零件();
  7.         把零件组装成汽车();
  8.         出厂前检查();
  9.     }
  10.      
  11.     private void 采矿() {
  12.         System.out.println("采矿");
  13.     }
  14.      
  15.     private void 把矿做成原料() {
  16.         System.out.println("把矿做成原料");
  17.     }
  18.      
  19.     private void 把原料做成零件() {
  20.         System.out.println("把原料做成零件");
  21.     }
  22.      
  23.     private void 把零件组装成汽车() {
  24.         System.out.println("把零件组装成汽车");
  25.     }
  26.      
  27.     private void 出厂前检查() {
  28.         System.out.println("出厂前检查");
  29.     }

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

  33. }
复制代码
  1. public class 造汽车2 {
  2.      
  3.     public void 造一辆汽车() {
  4.         System.out.println("采矿");
  5.         System.out.println("把矿做成原料");
  6.         System.out.println("把原料做成零件");
  7.         System.out.println("把零件组装成汽车");
  8.         System.out.println("出厂前检查");
  9.     }

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

  13. }
复制代码


回复

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-3-31 13:58:12 | 显示全部楼层
这个要看你的是实际应用场景,这个造汽车的功能是否单一,如果只是单单设计一个类,能够按照步骤成功创建一个想要的对象,那么汽车2肯定更简单直接。但是如果考虑到以后的扩展以及和其他的类的关系,肯定汽车1的写法可操作性更强,灵活性与结合性都会更好
回复

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

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

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

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

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-4-25 09:40:32 | 显示全部楼层
如果要可维护的话,不是简简单单的一个类能解决的,需要功能细分,甚至每个功能都是一个模块。
而且最好做成接口模式,这样优化的时候或者实现逻辑变化的时候,只要修改接口的实现类,其他都不需要改动,甚至可以通过配置决定到底是哪个实现类来实现这个功能。
回复

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-5-1 08:44:45 | 显示全部楼层
第一种更合理
方法名,
step101_采矿
    ---将来扩展102,103
step201_做成原料
step301
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )

GMT+8, 2024-9-20 15:04 , Processed in 0.028667 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表