问题标签 [maintainability]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
161 浏览

wpf - WPF:可以使用样式来格式化两种不同场景的用户控件吗?

我需要在我的应用程序的两个不同位置显示一个外观相似的对话框,一个位置作为模式对话框,一个位置嵌入到另一个菜单中。

从我对 WPF 的有限理解来看,Styles 似乎允许我编写单个 UserControl 并为这两种情况自定义其颜色和字体。然而,变化更广泛一些,一些元素位置(例如,TextBox)处于不同的相对位置。

我不确定这是否可以使用 Styles 来完成,或者是否有更合适的方法在 WPF 中执行此操作。最坏的情况是,我可以编写两个完全不同的用户控件,但这在可维护性方面非常糟糕,所以我想避免它。

0 投票
3 回答
1211 浏览

makefile - 如何制作易于更新的 makefile?

我的 makefile 看起来像这样:

当(不是if)更多目标被添加到项目中时,开发人员将必须更新至少三件事:

  1. 新目标的目标文件列表
  2. 所有目标文件的列表
  3. 用于制作新目标的目标,即使它使用与其他目标相同的规则

有没有办法简化这个过程,还是我坚持下去?

我尝试使用通配符规则,但看起来它们不适用于宏。

您可以将目标文件列表视为规则,但最终目标规则无法直接访问它们。

没有更好的办法吗?

0 投票
1 回答
4017 浏览

wpf - WPF 中的上下文菜单继承

我有包含不同项目类型的 TreeView。项目样式是通过自定义 ItemContainerStyleSelector 属性定义的。

我的样式都共享一个基本样式,并且每种样式中只定义了特定于项目的东西。它看起来像这样:

上下文菜单是这样定义的

另一个上下文菜单也应该包含那些常见的项目,如删除。每次命令属性等发生变化时,都需要通过复制粘贴来复制这些内容。可维护性的地狱。有没有办法定义一个包含常用项目的上下文菜单,然后“派生”特定的上下文菜单?

编辑:我从这个线程中找到了一个带有提示的解决方案:我定义了一个包含公共项目的集合,并在定义一个包含新项目和公共项目集合的菜单时使用复合集合

0 投票
1 回答
48 浏览

plugins - 程序扫描到代码文件的差异?

是否有任何程序可以扫描两个代码文件,进行比较,并向您展示它们之间的不同之处。我需要这样一个系统,因为我正在使用定期更新的插件构建网站,但是我需要编辑插件以提供我的客户希望拥有的一些功能。我希望这只是减少在将插件上传到服务器并更新之前对插件中的文件进行更改所需的时间。

0 投票
3 回答
132 浏览

c - 何时(不)将嵌套数据结构的一部分存储到临时变量中——漂亮/丑陋,更快/更慢?

在一个数组/结构/联合中读取多个数字/字符串的最佳方法是什么,它本身嵌套在一个或多个父数组/结构/联合中?

第一个没有临时变量的例子:

第一个带有临时变量的示例:

我敢肯定,上面第一个示例中的临时变量非常愚蠢,但在下面的第二个示例中,它是有意义的,并且看起来更好用,对吧?

第二个没有临时变量的例子:

带有临时变量的第二个示例:

那么你在哪里画线?我意识到编译器足够聪明,可以插入以这种方式产生最佳效率的程序集所需的任何间接,但是(假设假设对性能至关重要的代码)也许有例外?从代码清晰度/可维护性的角度来看,如果有的话,您的经验法则是什么?

0 投票
1 回答
69 浏览

c# - 基于可能是几种不同类型之一的对象调用重载方法的理想方法是什么?

对于我的 WPF 视图,我有几个对象实现了用于显示目的的单个接口。选择一个时,我想根据视图上选择的类型和选项调用某个方法。我已经为每种类型的对象提供了重载。我尝试使用通用方法,但它证明对象差异太大而无法使用。

为了可维护性,我试图避免与大型 if 语句的控制耦合。

使用单一接口是我出错了,还是有一种有趣的可维护方式来做到这一点?

我有一个包含 IDisplayableObject 集合的数据网格。

现在,我选择了第一个答案。

我想避免 if 语句。对于这种情况,我通常使用映射到 Action 的字典,但我还有另一种方法

因此,我需要执行操作,导出虚线或导出移位列,然后我需要决定要导出哪种类型。

从代码中可以看出,重复不是一件好事,我想尽可能地避免它。对于这个应用程序,这没什么大不了的,但对我个人的学习来说更重要。

0 投票
1 回答
1263 浏览

c - 我应该阅读哪些书籍/网站来学习编写可读和可维护的 C 代码?

可能重复:
权威的 C 书籍指南和列表
良好的 C++ 开源代码

我在 2 年前开始学习 C++。从那以后,我回去学习了 C 以及其他编程语言,但 C 是我最喜欢的。最近在查看开源项目时,我很快意识到我的代码很丑陋,几乎不可读,而且与可扩展性相反。我希望改变这一点。任何可以更好地帮助我更专业地用 C 编程的任何书籍、网站或其他资源的参考/链接将不胜感激。

谢谢

0 投票
3 回答
5722 浏览

c# - 在 C# 中简化覆盖 Equals()、GetHashCode() 以获得更好的可维护性

我发现我的自我超越Equals()GetHashCode()经常实现具有相同属性值的业务对象相等的语义。这导致代码重复编写且维护脆弱(属性被添加并且一个/两个覆盖没有更新)。

代码最终看起来像这样(欢迎对实现发表评论):

我的问题

  1. 实施模式是否合理?
  2. 考虑到贡献的组件值分布良好,^ 是否足够?考虑到它们的散列分布良好,在组合集合元素时是否需要乘以 31 到 N?
  3. 似乎可以将此代码抽象为使用反射来确定公共属性的代码,构建与手动编码的解决方案匹配的表达式树,并根据需要执行表达式树。这种方法看起来合理吗?某处是否有现有的实现?
0 投票
3 回答
875 浏览

android - 如何以易于维护的格式组合图像、字符串和整数集

所以,我试图找出将许多数据类型组合在一起的最佳方法。在我的代码内部,我正在创建一个类。在外部,我希望有一个地方可以管理以下类型的数据,或者至少是指向所述数据的指针。请注意,这些数据有很多组,我预计随着时间的推移会增加更多。

编辑:我正在大规模简化曾经在这里的内容。

在编译时想象,我有一个对象列表。每个对象都有一些特征,所有对象都将具有这些特征。这些包括:

  • 一个图像图像
  • 一些字符串
  • 整数数组
  • 字符串数组

我想找到一种方法将所有这些存储在任何代码之外。理想情况下,我想使用 XML,它看起来像这样:

图像当前存储为资源变量。我只是不确定如何将对图像的引用放入 XML 文件中。

如果可以找到更好的解决方案,我不会接受 XML 文件的想法。我想要的只是一个访问这些信息的某种方式的单一数据库。

除非我提交新的更新,否则不应更改此数据。这些不需要在运行时更新,但我肯定想在构建之间不时更新它们。我听说过 Preferences,它可能有效,但我不确定它们是否可能是用户可更新的.

0 投票
2 回答
5500 浏览

c# - 生产项目的代码指标(C#、Visual Studio)的常用值

这里有一些关于代码度量的问题,尤其是关于目标值的问题。我正在寻找的是在现实生活中的制作项目中“常见”的东西。也许只有我一个人,但我参与的任何项目都没有考虑过这些事情,所以当我运行 ReSharper Code Issues 或 Visual Studio Code Metrics 时,我似乎是第一个 - 所以这些值总是让我感到惊讶。

我当前的 SharePoint 作业示例:

所以,问题是,你通常在“野外”看到什么价值观?除了最优值和最佳实践,通常会遇到什么值?