各位大神,最近看到很多纠结的代码,如下:
如果有一个方法M,M很庞大,功能很复杂,开始只有一个模块A在用,过一段时间又做一个模块B也要用M这个方法,过一时间又做C也用M方法。但是A、B、C三个功能,不能直接用M方法,都需要进行一些个性化的定制开发。这样三个功能 完以后,M变得方法很难看明白(很恶心)。
我想不明白,针对以上的情况正确做法是什么?
1、针对A、B、C分别写三个M1、M2、M3?这样的优点:(1)可读性好 (2)如果功能变了只修改对应的方法就可以了。缺点:如果三方法共用的代码变了,会改三个方法。如果有漏改的对应的功能就不对。
2、三个功能用一个M方法。优点:如果修改了共用的代码,只改一处就可以了。缺点:(1)可读性不好 (2)但是如果修改错了,三个功能都不能用。
怎么办?????各位大神有什么好的建议。
相关推荐
本文主要讨论了在Web开发中一个常见的问题:如何实现一个表单中多个Submit按钮的功能。文章首先介绍了一个表单单个Submit按钮的实现方法,然后深入讨论了一个表单多个Submit按钮的实现方法,提出了三种简单而常用的...
要求:①定义一个接口,其中包含一个计算面积的抽象方法和一个计算周长的抽象方法;②输入数据为圆的半径、三角形的三条边长、矩形的长和宽,对于用户的输入要有友好提示;③程序能够排除输入过程中的非法数据(如:...
2、 编写一个一元二次方程类(Equation),具有类型为double的三个私有字段a, b, c分别代表方程的三个系数,通过构造方法给三个系数设置值,并用getFirstRoot()方法和getSecondRoot()方法得到两个实根。请另编写一个...
标题中的“电脑搜索功能不能用的解决方法”指的是在计算机操作系统中遇到搜索功能失效的问题,描述进一步明确了这一问题,即搜索功能无法正常使用,可能会显示错误信息,并且搜索助手工具栏为空白。这个问题可能是...
在这个实验中,我们将使用面向对象的编程语言,如Java或C++,设计一个窗口,接收三个变量,然后判断这三条边是否构成三角形,若是,是什么样的三角形,并输出结果。 程序功能流程图: 1. 输入三个变量 2. 判断这...
总的来说,"iphone之使用讯飞sdk写的一个语音识别功能"涵盖了iOS应用开发中的UI设计、第三方SDK集成、音频处理、事件响应等多方面技能。通过实践这个项目,开发者不仅可以掌握讯飞语音识别SDK的使用,还能提升自己的...
在这个“android ExpandableListView三级菜单的使用”示例中,我们将深入探讨如何创建并操作一个支持三级菜单的`ExpandableListView`。 首先,`ExpandableListView`是`ListView`的扩展,它提供了更丰富的功能,可以...
在该问题中,目标是找到一个最佳方式将不同尺寸的物体放入一个三维空间(箱子)内,使得空间利用率最高,同时保持物体间不相交。MATLAB是一种强大的数学计算和可视化软件,常用于解决各种复杂问题,包括三维装箱问题...
当这个功能出现故障,无法正常使用时,可能会对用户的日常操作带来不便。以下是一些解决Windows XP系统搜索功能失效的方法: 1. **第一种方法:注册jscript.dll** 当搜索功能无法工作时,可能是系统中的jscript....
摘要本文是该系列的第三篇也是最后一篇,提出了一种用于计算单环标量积分的替代方法。 它将前两篇文章的结果扩展到红外发散... 当考虑使用广义一环积分作为构建块的一环以外应用此方法时,此最后一个功能可能会很有用。
标题“拖动div到另一个div中”描述的就是这样一个功能,即实现一个div元素能够被拖动并放置到另一个div内,同时显示被拖动div的ID。这个功能在各种应用场景中都很有用,如文件管理器、布局构建器或富文本编辑器等。 ...
MATLAB 三次样条插值之三弯矩法是基于三个节点的样条插值方法,使用追赶法来求解三次样条分段函数系数因子。该方法可以实现通用格式解题,并且可以调用追赶法程序来计算插值函数的值。 首先,通过函数 sanwanj 得到...
"三点画圆弧"就是这样一个技术,它基于平面几何中的基本原理,通过给定的三个点可以确定一个唯一的圆。这个功能在地图软件、工程设计软件以及游戏开发中都有广泛应用。 首先,我们需要理解如何从三个点确定一个圆。...
要实现拍照功能,我们需要在CameraSurfaceView类中添加一个takePicture方法,该方法将调用Camera的takePicture方法来拍摄照片。同时,我们还需要提供三个回调函数:ShutterCallback、RawPictureCallback和...
本文将深入探讨一个具体的RESTful文件下载方法,并详细分析其实现原理。 #### 二、方法描述 根据提供的代码片段,我们可以看到这是一个基于Java的RESTful服务端点,用于处理文件下载请求。该方法定义在一个类中,...
今天,我们将探讨如何在 Flutter 中实现全局悬浮按钮,并提供三个不同的实现方法。 方法一:使用 Scaffold 和 Stack 实现悬浮按钮 在这个方法中,我们使用 Scaffold 和 Stack 小部件来实现悬浮按钮。我们首先定义...
例如,你可以先用`meshgrid`函数生成x和y的网格,然后通过一个数学函数或数据文件得到z值。在GUI中,用户可能在输入框中输入函数表达式或者加载数据文件,程序根据这些输入生成三维图像。 为了实现这一功能,你需要...
- 将这三个配置项设置为“Enabled”,以确保GAIA功能被正确激活。 4. **添加必要的库文件** - 在配置完上述功能后,还需要在工程中添加必要的库文件。在“Libraries”部分添加“gaia_spp”库文件。 - 这一步非常...
- `public string ButtShow(string strs)`:定义了一个公共方法`ButtShow`,接受一个字符串参数`strs`并返回原字符串。 **原理**: - 在这个例子中,`ButtShow`方法被直接嵌入到了HTML中,当页面加载时,ASP.NET...
`BeginAnimation` 方法用于启动动画,它接受一个依赖项属性和一个 `AnimationTimeline` 对象。 创建3D动画的一般步骤如下: 1. **定义3D模型**:使用 `MeshGeometry3D` 或其他3D几何类创建基本形状,然后添加到 `...