Questions tagged «refactoring»

重构是一种用于重组现有代码,更改其内部结构而不更改其外部行为的严格技术。关于堆栈重构的开放式问题对于Stack Overflow来说是没有意义的,但是它们可能适合代码审查。



21
如何在Java项目中查找未使用/无效的代码[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 6个月前关闭。 改善这个问题 您使用什么工具在大型Java项目中查找未使用/无效的代码?我们的产品已经开发了几年,并且很难手动检测不再使用的代码。但是,我们确实尝试删除尽可能多的未使用的代码。 对于一般策略/技术(除特定工具之外)的建议也将受到赞赏。 编辑:请注意,我们已经使用了代码覆盖率工具(Clover,IntelliJ),但是这些帮助不大。无效代码仍具有单元测试,并显示为已覆盖。我猜一个理想的工具可以识别出几乎没有其他代码依赖的代码集群,从而可以对文档进行手动检查。

19
在C / C ++中检测多余的#include?
我经常发现文件的标头部分一直都在变大,但从未变小。在源文件的整个生命周期中,类可能已经移动并被重构,并且很可能有很多#includes不需要再存在了。将它们保留在那里只会延长编译时间,并增加不必要的编译依赖项。试图弄清仍然需要哪些可能会很乏味。 是否有某种工具可以检测到多余的#include指令并建议可以安全删除的指令? 皮棉可以这样做吗?

10
查找并替换Android Studio
有没有一种方法可以找到并替换整个项目中所有单词的出现(不仅是使用重构->重命名的单个类),而且还可以在android studio中或使用命令行脚本维护大小写吗? 例如,供应商必须去商家,供应商->商人,供应商->商户。我的老板希望我为正在进行的项目更改所有与供应商的联系。我已经做了大约一个小时,我知道我在浪费时间。让我知道任何节省时间的建议。

9
查找未使用的代码[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 4年前关闭。 改善这个问题 我必须重构一个大型的C#应用​​程序,并且发现了很多从未使用过的功能。如何检查未使用的代码,以便删除所有未使用的功能?
208 c#  .net  refactoring 

9
ReSharper有哪些替代方案?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 6年前关闭。 改善这个问题 我正在考虑购买ReSharper许可证,但是ReSharper是否有其他选择,与ReSharper相比,您如何评价它们? 它不一定是免费的替代品,但我只想知道等效产品的好坏。

19
有没有可用的C ++重构工具?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 6个月前关闭。 改善这个问题 有谁知道一个功能强大的C ++重构工具,该工具可以与大型代码库(大约100.000行)可靠地工作? 在过去的几年中,我尝试了一次又一次的尝试:SlickEdit,Eclipse CDT。它们都根本不可用。 摘要:我花了一些时间并评估了“ Visual Assist X”以及“ Refactor for C ++”。两者都有一些令人印象深刻的功能,但两者也都远非完美。如果不进行手动修改,提取大块代码通常无法令人满意-因此无法获得回报。 “ Visual Assist X”具有很好的功能,例如更完整的自动完成功能。但是,它会导致大量闪烁,并在某些点上减慢速度。 因此,我认为答案是:“不,没有针对C ++的生产就绪的重构工具” 2015年3月更新 至于hdoghmens今天答复,我尝试使用Resharper for C ++。他的链接 https://www.jetbrains.com/resharper/没有提及C ++。但是我发现一年多以前在这里发布的Resharper C ++: https://www.jetbrains.com/resharper/features/cpp.html 我使用20MB的代码库尝试了VC2010。 测试1:提​​取方法:导致Resharper异常。没有源代码更改。 测试2:使用不同来源的提取方法:效果很好 测试3:更改提取函数的签名:导致C ++代码损坏: bool myclass::do_work123(<unknown long Color>int& Filled*&, long, int&) 也许这就是为什么C ++不在主页上列出。 我认为该问题的答案仍然是“否”。
161 c++  refactoring 

30
.vimrc中包含什么?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它当前不接受新的答案或互动。 Vi和Vim允许进行非常棒的自定义,通常将其存储在.vimrc文件中。程序员的典型功能是语法突出显示,智能缩进等。 .vimrc中隐藏了哪些其他用于生产性编程的技巧? 我对重构,自动类和类似的生产力宏特别感兴趣,尤其是对于C#。
157 vim  refactoring 

17
如何简化一个空安全的compareTo()实现?
我正在compareTo()为这样的简单类实现方法(以便能够使用Collections.sort()和Java平台提供的其他功能): public class Metadata implements Comparable<Metadata> { private String name; private String value; // Imagine basic constructor and accessors here // Irrelevant parts omitted } 我希望这些对象的自然排序是:1)按名称排序,以及2)如果名称相同,则按值排序;两种比较均应不区分大小写。对于这两个字段,空值都是完全可以接受的,因此compareTo在这些情况下不得中断。 我想到的解决方案是遵循以下思路的(我在这里使用“保护子句”,而其他人可能更喜欢单个返回点,但是这很重要): // primarily by name, secondarily by value; null-safe; case-insensitive public int compareTo(Metadata other) { if (this.name == null && other.name != null){ return …

22
C ++代码的单元测试-工具和方法论
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 4年前关闭。 改善这个问题 我正在开发一个已经开发了几年的大型c ++系统。为了提高现有代码的质量,我们参与了一个大型的长期重构项目。 您知道一个好的工具可以帮助我用C ++编写单元测试吗?也许类似于Junit或Nunit? 谁能在编写没有单元测试的模块的单元测试的方法上给出任何好的建议?

24
函数何时过长?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 35线,55线,100线,300线?什么时候应该开始分解?我之所以问是因为我有一个包含60行(包括注释)的函数,并且正在考虑将其拆分。 long_function(){ ... } 变成: small_function_1(){...} small_function_2(){...} small_function_3(){...} 这些函数将不会在long_function之外使用,使较小的函数意味着更多的函数调用,等等。 什么时候将功能分解为较小的功能?为什么? 方法应该只做一件合乎逻辑的事情(考虑功能性) 您应该可以在一个句子中解释该方法 它应该适合您显示器的高度 避免不必要的开销(指出明显的注释...) 对于小型逻辑功能,单元测试更容易 检查功能的一部分是否可以被其他类或方法重用 避免过度的类间耦合 避免深层嵌套的控制结构 谢谢大家的回答,编辑列表并为正确的答案投票,我将选择一个;) 我现在正在考虑这些想法:)

3
编码Katas,用于练习遗留代码的重构
最近几个月,我对编写kata编码非常感兴趣。我相信它们是磨练我的编程技能和提高我在工作中编写的代码质量的好方法。 卡塔斯有很多地方。喜欢.. http://codekata.pragprog.com/ http://schuchert.wikispaces.com/Katas http://www.codingdojo.org/ 我发现它们是Katas的绝佳存储库...我对其中一些的尝试获得了极大的回报。 但是,我觉得到目前为止,我所看到的所有Kata都有一个短暂的来临。他们似乎都不允许我练习重构不良代码。第一次学习如何编写干净的代码真是太好了……但是在我目前的工作中,我没有太多的机会编写新代码。相反,我经常与遗留代码作斗争,并试图弄清楚如何重构模块,消除依赖关系并减少耦合。 因此,我一直在寻找一些Katas,可以用来磨练重构遗留代码并将其转换为干净代码的技能。 有谁知道已经存在的东西吗?我知道我在工作时会进行很多练习...但是我希望将自己的技能磨练到可以迅速了解如何打破依赖关系并在班级中分离关注点的程度做太多了。

2
在Facebook React中使用Mixins与组件进行代码重用
我开始在Backbone项目中使用Facebook React,到目前为止一切进展顺利。 但是,我注意到一些重复出现在我的React代码中。 例如,我有几个状态为INITIAL,SENDING和的类似表单的小部件SENT。当按下按钮时,需要验证表单,提出请求,然后更新状态。this.state当然,状态和字段值都保存在React 中。 如果这些是Backbone视图,我将提取一个名为的基类,FormView但我的印象是React既不认可也不支持子类共享视图逻辑(如果我错了,请纠正我)。 我已经看到了两种在React中重用代码的方法: Mixins(如React附带的LinkedStateMixin); 容器组件(例如react-infinite-scroll)。 我是否正确认为Mixins和容器在React中优先于继承?这是故意设计的决定吗? 在第二段的“表单小部件”示例中使用混合或容器组件是否更有意义? 这里有一个要点FeedbackWidget,并JoinWidget在其当前状态。它们具有相似的结构,相似的beginSend方法,并且都将需要某种验证支持(尚不存在)。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.