工具类Util和通用类Common的反模式

news/2024/11/9 9:38:27/

Util和Common反模式在错误的方向上快速增长。

最初开始于一个开发人员创建一个单一的util类,一个简单的方法不适合任何其他地方,然后,其他人跟随他添加许多其他方法。

如果没有正确处理,Utils类可能会成为代码中最有问题的地方。 我曾经看到过一个Util类,可以将整个银行的估值变为零。

以下是我写更好的代码所遵循的5条规则:

1、划分组团相关逻辑
对相同数据进行操作的方法应该在同一个类中。
将数据和行为分配到一个组”类“中。

2、实行单一责任制
每个类都应该只有一个改变的理由。
这意味着一个类应该只有一个功能或职责。

如果你发现一个类做得太多了,那么是时候把它分解成更集中的类了。

3、通过组合进行封装
在可行的情况下,更喜欢组合而不是继承。

使用对象来表示可以组合到类中的行为或状态,而不是通过继承来扩展它们。

4、在公共接口处的验证输入
当你的方法需要接受来自代码其他部分的输入时,不要仅仅相信输入是正确的。

验证以确保其符合方法的要求。

5、剪切可变状态
形式与内容分离,可变状态属于内容,减少内容对形式逻辑的改变,减少数据对算法的影响。
减少类中可更改状态的数量。
可以改变的变量越多,就越难跟踪它们的相互作用并维护系统。
在可能的情况下,使类实例不可变。

不使用封装会导致系统更难维护。

https://www.jdon.com/69579.html


http://www.ppmy.cn/news/1195510.html

相关文章

leetcode:389. 找不同

一、题目 函数原型:char findTheDifference(char * s, char * t) 二、思路 作者原先的思路是先将两个字符串从小到大排序,然后两个字符串依次比较。若出现字符串t中的元素和字符串s不相等,则说明该元素就是被添加的字母。 但是,该…

web3 React dapp中编写balance组件从redux取出并展示用户资产

好啊 上文WEB3 在 React搭建的Dapp中通过redux全局获取并存储用户ETH与自定义token与交易所存储数量中 我们拿到了用户的一个本身 和 交易所token数量 并放进了redux中做了一个全局管理 然后 我们继续 先 起来ganache的一个模拟环境 ganache -d然后 我们启动自己的项目 顺手发…

java实现单点登录

以下是使用Java实现单点登录功能的示例代码&#xff1a; SSO服务器端代码 SSO服务器使用Spring Boot框架实现&#xff0c;主要的部分如下&#xff1a; // SSO服务器端控制器 RestController public class SsoController {// 模拟用户账号信息private static final Map<St…

nodejs express uniapp 图书借阅管理系统源码

开发环境及工具&#xff1a; nodejs&#xff0c;mysql5.7&#xff0c;HBuilder X&#xff0c;vscode&#xff08;webstorm&#xff09; 技术说明&#xff1a; nodejs express vue elementui uniapp 功能介绍&#xff1a; 用户端&#xff1a; 登录注册 首页显示轮播图&am…

代码随想录打卡第六十天|● 739. 每日温度 ● 496.下一个更大元素 I

739. 每日温度 题目&#xff1a; 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来…

Redis常见风险分析

击穿 概念&#xff1a;在Redis获取某一key时, 由于key不存在, 而必须向DB发起一次请求的行为, 称为“Redis击穿”。 引发击穿的原因&#xff1a; 第一次访问恶意访问不存在的keyKey过期 合理的规避方案&#xff1a; 服务器启动时, 提前写入规范key的命名, 通过中间件拦截对…

东北大学python大作业

目前金属矿开采&#xff0c;爆破还是主要的破岩方式&#xff0c;为了保证巷道采场的安全&#xff0c;需要对爆破震动进行监测&#xff0c;获取的监测数据如附件&#xff0c;第1列数据为震动的序号&#xff0c;第2、3、4列为x,y,z三个方向的震动速度&#xff0c;往往由于各种因素…

发邮件时我可以不是我

大家好&#xff0c;才是真的好。 Notes/Domino 12.0有一项新特性&#xff0c;即启用备用发件人功能&#xff0c;从一个邮箱当中发送邮件&#xff0c;可以选定不同的用户邮箱身份&#xff0c;继而我不是我。 这在某些情况下特别实用。比如有人使用Notes客户端来接收163或Gmail…