首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一个长方法只应该在它自己的类或函数中使用吗?

这个问答内容围绕了编程的最佳实践,即一个长方法是否应该在它自己的类或函数中使用。在编程中,长方法可能会导致代码难以阅读和维护。为了提高代码的可读性和可维护性,通常建议将长方法拆分为更小的、具有单一职责的方法。

以下是一些建议:

  1. 如果一个方法的功能比较复杂,可以考虑将其拆分为多个独立的方法,每个方法负责一个单一的功能。
  2. 如果一个方法的长度超过了屏幕的可视范围,也可以考虑将其拆分为更小的方法。
  3. 如果一个方法的名称很难理解,可以考虑将其拆分为更小的方法,每个方法的名称更具有描述性。
  4. 如果一个方法的实现方式不够清晰,可以考虑将其拆分为更小的方法,每个方法的实现更加清晰。

总之,一个长方法不应该在它自己的类或函数中使用,应该将其拆分为更小的、具有单一职责的方法,以提高代码的可读性和可维护性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

最全面的c++构造函数高级使用方法及禁忌

说明一下,我用是gcc7.1.0编译器,标准库源代码也是这个版本。 本篇文章讲解c++,构造函数高级用法以及特殊使用情况。 1....‘int main()’: test.cpp:32:12: 错误:使用了被删除函数‘CPtr::CPtr(CPtr&)’ CPtr p2(p1); 说明声明为=delete以后不再允许调用,去掉...里面使用移动构造就要小心了,一不小心就会出现问题哦,具体移动构造怎么实现可以参考上面第一点代码。...怎么防止对象被拷贝和赋值 防止对象被拷贝和赋值,换句话说,就是不能调用拷贝函数和赋值运算符重载函数,我们首先能想到就是把这两个函数声明为private,或者私有继承一个,而到了c++11...综上,不论是基还是继承,他们构造函数中都可以直接调用虚函数

1.5K30

详解高级PHP工程师面试题

在多人团队,我们应该在 master 分支上直接开发? 如果线上产生了bug该通过什么样方式分支去修复? 当有多个分支时候,测试如何有效参与进来每一个分支测试?...这个分支是为预发准备,测试介入,也只应该在该分支产生时才介入。当我们不管是新功能开发,还是一般bug修改都差不多了。...共享内存:是系统在内存开辟一块公共内存区域,任何一个进程都可以访问,在同一时刻,可以有多个进程访问该区域,为了保证数据一致性,需要对该内存区域加锁信号量。 信号: 信号是一种系统调用。...我们发现 PHP 对信号量和共享内存封装得很好,使用起来非常简单。除此之外,PHP 库 Sync 将常用 IPC 方法封装成为,能实现跨平台使用....5.什么是Hash一致性,这个方法主要运用在什么场景 发布者:全栈程序员栈,转载请注明出处:https://javaforall.cn/111964.html原文链接:https://javaforall.cn

53320

详解高级PHP工程师面试题

图片来源:阮一峰老师博客 我疑惑: 那么团队我们该使用怎样分支策略来进行开发协作? 在多人团队,我们应该在 master 分支上直接开发?...这个分支是为预发准备,测试介入,也只应该在该分支产生时才介入。当我们不管是新功能开发,还是一般bug修改都差不多了。...同时这里也解决了我一个疑惑,测试如何参与到git每个分支来?答案是:测试不应该参与到每个分支来,只应该参与到release分支中去。...共享内存:是系统在内存开辟一块公共内存区域,任何一个进程都可以访问,在同一时刻,可以有多个进程访问该区域,为了保证数据一致性,需要对该内存区域加锁信号量。 信号: 信号是一种系统调用。...我们发现 PHP 对信号量和共享内存封装得很好,使用起来非常简单。除此之外,PHP 库 Sync 将常用 IPC 方法封装成为,能实现跨平台使用.

47820

SqlSession和SqlSessionFactory「建议收藏」

SqlSessionFactory   SqlSessionFactory 一旦被创建就应该在应用运行期间一直存在,没有任何理由对它进行清除重建。...因此  SqlSessionFactory 最佳范围是应用范围。有很多方法可以做到,最简单就是使用单例模式或者静态单例模式。...SqlSession   每个线程都应该有它自己 SqlSession 实例。SqlSession 实例不是线程安全,因此是不能被共享,所以它最佳范围是请求方法范围。...绝对不能将 SqlSession 实例引用放在一个静态域,甚至一个实例变量也不行。...如果你现在正在使用一种 Web 框架,要考虑 SqlSession 放在一个和 HTTP 请求对象相似的范围

33510

Java编码规范

 1.1 一般概念 n 尽量使用完整英文描述符 n 采用适用于相关领域术语 n 采用大小写混合使名字可读 n 尽量少用缩写,但如果用了,要明智地使用,且在整个工程中统一 n 避免使用名字...示范 文档注释 在紧靠接口、、成员函数和字段声明前面注释它们。 /** 客户:客户是我们将服务和产品卖给的人机构。*/ C 语言风格 采用 C 语言风格注释去掉不再使用但你仍想保留代码。...在任何情况下, 超长语句应该在一个逗号或者一个操作符后折行。 一条语句折行后, 应该比原来语句再缩进2个字符。 n {} 对 {} 语句应该单独作为一行。...下面的例子说明括号和空格错误及正确使用: CallProc( AParameter ); // 错误 CallProc(AParameter); // 正确 不要在语句中使用无意义括号,括号只应该为达到某种目的而出现在源代码...n 避免太多使用 synchronized 关键字 避免不必要使用关键字 synchronized,应该在必要时候再使用它,这是一个避免死锁方法

86440

React入门级小白指北及常见问题解答

官方文档也给出了标准,即三个问题: 1、它是通过 props 从父级传来?如果是,它可能不是 state。 2、它随着时间推移不变?如果是,它可能不是 state。...3、你能够根据组件任何其他 state props 把它计算出来?如果是,它不是 state。...不过好在 setState 方法可以拥有一个回调函数,当数据设置完毕后,就调用这个函数,写法如下: ?...第一个参数是 state 对象属性设置,第二个参数是回调函数使用了 ES6 箭头函数语法。 4.状态提升与单向数据流 使用 react 经常会遇到几个组件需要共用状态数据情况。...在React应用,对应任何可变数据理应只有一个单一“数据源”。……你应该在应用中保持自上而下数据流,而不是尝试在不同组件同步状态。

1.2K120

《代码整洁之道》摘录总结

F2:输出参数 别这么做,考虑修改他所在对象状态(输出参数指传入参数,函数对它进行操作,然后后续操作使用这个参数) F4:死函数 永不被调用函数应该删除 一般性问题 G1:一个源文件存在多种语言 尽量减少源文件其他编程语言数量和范围...G2:明显行为违背实现 函数应该实现其它程序员有理由期待行为。...G9:删除不执行代码 G10:垂直分隔 变量和函数该在靠近使用地方定义,定义和使用垂直分隔不应该过长。 G11:前后不一致 选择一个编程约定就一直遵守它。...G19:使用解释性变量 让程序过程清晰最有力方法之一就是将计算过程打散成有意义单词命名变量放置中间值 G20:函数名应该表达其行为 G21:理解算法 在完成某个函数前确认自己理解了它工作原理。...这里指的是在函数调用链上游放置可配置数据。如在main函数解析args。

58230

React入门级小白指北及常见问题解答

官方文档也给出了标准,即三个问题: 1.它是通过 props 从父级传来?如果是,它可能不是 state。 2.它随着时间推移不变?如果是,它可能不是 state。...3.你能够根据组件任何其他 state props 把它计算出来?如果是,它不是 state。...不过好在 setState 方法可以拥有一个回调函数,当数据设置完毕后,就调用这个函数,写法如下: ? ?...第一个参数是 state 对象属性设置,第二个参数是回调函数使用了 ES6 箭头函数语法,关于 state 更多知识 官方文档点这里。 推荐另一篇深入介绍 state 文章,点击传送。...在React应用,对应任何可变数据理应只有一个单一“数据源”。……你应该在应用中保持自上而下数据流,而不是尝试在不同组件同步状态。

80620

Spring框架参考手册_5.0.0_中文版_Part II_3.6

作为一种替代方法,你可以使用@PostConstruct注解指定一个POPJO初始化方法。...这意味着,作为一个应用开发者,你可以编写应用程序使用名为init()初始化回调方法,而不必在每个bean定义配置init-method="init"特性。...因此,任何负相位值表示对象应该在那么标准组件之前启动(在它们之后停止),反之为任何正相位值。 正如你看到,在SmartLifecycle定义停止方法接收一个回调函数。...如果为true,对象将会在那时启动而不是等待上下文显式调用它自己start()方法(不像上下文再刷新,对于一个标准上下文实现上下启动不会自动发生)。”...如果你这一做的话,ApplicationContext可以被自动装配到变量,构造函数参数方法参数,如果讨论变量,构造函数方法有@Autowired注解,那么可以期望它是ApplicationContext

37530

Code | Python30个编程技巧!

原地交换两个数字 Python 提供了一个直观在一行代码赋值与交换(变量值)方法,请参见下面的示例: 3....classA 与 classB 是两个,其中一个构造函数会被调用。...下面是另一个多个条件表达式链接起来用以计算最小值例子: 或者,对于 in 操作符我们也可以使用 ‘{1,3,5,7}’ 而不是 ‘[1,3,5,7]’,因为 set 取元素是 O(1) 操作。...检查一个对象内存使用 在 Python 2.7 一个 32 比特整数占用 24 字节,在 Python 3.5 利用 28 字节。...为确定内存使用,我们可以调用 getsizeof 方法: 在 Python 2.7 很明显,你可以从结果中看到确实有内存使用节省,但是你只应该在一个内存开销不必要得大时才使用 __slots

63940

单例模式在 Go 语言中实现

在软件设计,我们常常会遇到一种情况,即某些对象只应该有一个实例,而且这个实例应该在整个应用程序中都可访问。例如,一个数据库连接池,我们可能只需要一个,而且在程序任何地方都可以使用。...我们还定义了一个 once 变量,它是 sync.Once 类型。我们在 GetInstance 函数使用 once.Do 方法来确保 instance 只会被初始化一次。...我们调用了两次 GetInstance 方法,但是得到是同一个实例,这就验证了我们单例模式实现。...注意事项 虽然单例模式看起来很简单,但是在实际使用需要注意以下几点: 确保单例实例在多线程环境下也确实是唯一。在我们实现,我们使用了 sync.Once 来保证这一点。...单例实例一旦创建,就会在程序整个生命周期中存在。这可能会导致内存和资源浪费,特别是当实例占用资源很大时。 由于单例模式会全局共享一个实例,所以需要注意避免状态污染。

21510

读书「重构」

一个函数应该且只应该完成一件事情。 对一个对象/函数来说,哪些地方很可能需要重构?...判断方法是删掉这些数据项一项,如果其他数据立刻变得没有意义,那么说明他们应该在一起。 重构方法有哪些?...用对象取代函数 如果有一个大型函数,其中对局部变量使用使你无法使用Extract Method,考虑把这个函数放进一个单独对象。然后再分解函数。...移动函数 与移动字段相似:如果一个 A 一个函数与 B 对象有更多交流:或者调用后者,或者被后者调用,考虑把 A 这个函数放到 B 里。但优先考虑移动字段。...分解 如果类责任过于复杂,考虑分解这个,抽象出一个一个方法是思考如果把这个函数或者变量去掉之后,是不是其他函数变量就没有意义了?

50920

android-代码样式规范

在Javadoc注释,描述接口作用。 你写每个和公共方法必须包含一个Javadoc注释,至少有一个句子描述方法作用。这句话应以第三人称描述性动词开始。...@Override:当方法从超覆盖声明实现时,必须使用@Override注释。...例如,如果使用@inheritdocs Javadoc标记,并从(而不是接口)派生,则还必须注释该方法@覆盖父方法。...在模块内单个函数调用链,只有最内层函数应该返回错误,并且同一模块调用者应该只添加一些日志,如果这显着帮助隔离问题。...在一个模块链,除了VERBOSE级别以外,当低级模块检测到来自高级模块无效数据时,低级模块只应将此情况记录到DEBUG日志,并且仅当日志记录提供对呼叫者不可用信息。

53230

如何给6岁小朋友讲解面向对象编程

当每个对象在中保持其状态私有时,就可以实现封装。其他对象不能直接访问此状态。相反,它们只能调用一个公共函数列表——称为方法。...因此,对象通过方法管理它自己状态——除非显式允许,否则任何其他都不能接触它。如果希望与对象通信,应该使用提供方法。但是(默认情况下),您不能更改状态。 假设我们正在创建一个小型模拟人生游戏。...而且,不同对象之间有很多通信。因此,多年来保持这样大型代码库(在此过程中进行了更改)是很困难。 抽象是一个旨在缓解这个问题概念。 应用抽象意味着每个对象只应该公开使用抽象高级机制来使用它。...可以把它看作是一组公共方法,任何其他都可以调用这些方法,而不需要“知道”它们是如何工作。 另一个现实生活抽象例子? 想想你是如何使用手机: ? 手机很复杂。...继承 好,我们看到了封装和抽象如何帮助我们开发和维护一个代码库。 但是你知道OOP设计一个常见问题是什么? 对象通常非常相似。它们有共同逻辑。但它们并不完全相同。

95510

团队开发Git分支管理策略

使用 git 过程,它分支功能让我真的欣喜若狂,不过这是把双刃剑,一不小心你会得到这种git路径图: ?...图片来源:阮一峰老师博客 我疑惑: 那么团队我们该使用怎样分支策略来进行开发协作? 在多人团队,我们应该在 master 分支上直接开发?...这个分支是为预发准备,测试介入,也只应该在该分支产生时才介入。当我们不管是新功能开发,还是一般bug修改都差不多了。...因为这是非常重要一步,如果我们使用了 git 钩子,当合并到 master 时候,会自动发布到线上,所以这是临上线最后一道屏障。 同时这里也解决了我一个疑惑,测试如何参与到git每个分支来?...答案是:测试不应该参与到每个分支来,只应该参与到release分支中去。

1.3K20

如何在 Spring 中使用依赖注入

好吧,不就是去源码,让我们看看Spring文档: 依赖注入 (DI) 是一个过程,对象仅通过构造函数参数、工厂方法参数对象实例在构造从工厂方法返回。...这个过程基本上是 bean 本身逆过程(因此得名,控制反转),它通过使用直接构造服务定位器模式自行控制其依赖项实例化位置。 哇,文档上文字这么这么!...所以让我们翻译一下,DI 是一种软件原则,它将程序对象控制权转移到容器框架,在这种情况下,我们将责任放在 Spring 容器。那么,使用优势是什么?...结果,您变得更容易测试,特别是当依赖项位于接口抽象基上时,这允许在单元测试中使用存根模拟实现。 “好吧好吧,但我还是不明白这一切要点,请你说得更清楚些?” ...基于构造函数依赖注入 在基于构造函数依赖注入情况下,容器将调用一个构造函数,每个参数代表我们要设置依赖项。

26420

简单方法使用注解可以执行更清晰和类型安全代码

其实可以结合使用,接口中:简单方法使用注解,复杂方法使用xml配置。...应该对应路径,即接口应该在org.mybatis.example.BlogMapper路径下; 具有相同文件名,比如BlogMapper.java配置为BlogMapper.xml(** 看不清请...)并将它们直接注入到你 bean ,因此可以直接忽略它们生命周期。...SqlSessionFactory:一旦被创建就应该在应用运行期间一直存在,因此 SqlSessionFactory 最佳作用域是应用作用域   SqlSession:每个线程都应该有它自己 SqlSession...所以它最佳作用域是请求方法作用域。每次收到 HTTP 请求,就可以打开一个 SqlSession,返回一个响应,就关闭它。

59720

Xcode9 新特性之Main Thread Checker前言

这个Main Thread Checker作用就是:可以帮助开发者检查出那些应该在主线程调用但却在后台线程调用了API。其涉及到Appkit、UIKit以及其他一些只应该在主线程别调用API。...其大意是指:在app启动时,Main Thread Checker会用被调用方法implementation一个替换版本动态替换那些只应该在主线程调用方法implementation。...而这个方法implementation替换版本可以在调用之前预先检查出其是否在主线程上调用。...并且,文档中有介绍,Main Thread Checker不需要重新编译,并且可以和现有的二进制文件一起使用。通过注入一个动态库你可以把他运行在一个macOS app上,比如可以应用在CI系统上。...打开方式 正因为Main Thread Checker性能开销非常小。所以在xcode调试app时候,Main Thread Checker会自动打开。当然我们也可以手动关闭。

6.9K30

面向对象设计十条诫律

一个一个方法只有为一个理由存在。如果该类被称为贷款,那么它不应该处理银行帐户相关细节。如果方法调用是getloandetails,那么它实则就是负责获得贷款细节。...其实很简单,经常问-如果使用继承结构实现父子关系,反问自己:“子类是父一种类型?“或者“子类有某种父类型?...“ 当你需要使用某个部分功能函数时,总是使用组合,因为使用继承就可能会在整个类型上与原始绑定,绑定范围面积太大。如同男女上一次床就要结婚,这种绑定面积也是过大。...6.使得内部高度聚合 不应该将数据和行为分散在多个,努力方向之一是尽量不要使得实现细节分离泄露到其他,也意味着代码不能超出其存在目的,有一些设计范式如CQRS能让你分离不同行为在不同...一个特定功能算法只应一个地方实现,多个地方重复实现会导致维护问题,其反义词被称为“湿”,任何东西写两次。

21320
领券