问题标签 [code-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 投票
1 回答
389 浏览

javascript - 何时使用 Microsoft Reporting Services

这些天,我正在接受 Microsoft Reporting Service 的培训。虽然它是一个很好的工具,但我找不到任何使用它有用的例子。对我来说,使用 c# 代码结合 javascript 控件来实现报告总是更好。使用 C# 和 javascript 可能需要更多的工作,但另一方面,我将获得更好的可维护性和更好的自动测试。在任何情况下使用报告服务将是最佳选择?

0 投票
1 回答
160 浏览

git - 如何维护代码以便它可以在多个软件中使用?

我需要了解在多个应用程序中使用相同源代码/库的最佳实践。要求是,例如,我将我的代码/库出售给某家公司,比如说xyx,然后我应该xyz在我的包裹中使用公司名称(如果需要,还可以在其他地方使用)。

稍后,如果其他公司 pqr 想要该代码/库,我需要再次手动更改所有包名称(和其他名称)并在源代码控制软件中创建另一个存储库。这项任务非常耗时,而且一点也不好。
每当我在基本代码中发现错误时,我需要在相同代码的所有副本中提交更改并将库发布给所有公司。

我试图找到我应该如何处理这种情况。

我在这里谈论一些 Java 包(包含我希望在所有公司的软件中使用的非常基本的功能),并且我使用 tortoise svn 作为存储库。

0 投票
0 回答
323 浏览

puppet - 可以在模块中完成 Hiera 查找吗?

我有一个用 Java 实现的服务,它依赖于 3 个属性文件。我已经为公共属性模块中的每个属性文件定义了“定义”,并从服务特定模块中使用它们。属性文件之一的“定义”如下所示:

我在我的木偶代码中遵循角色和配置文件模式,并在服务特定配置文件中进行所有层次查找。现在正因为如此,每当属性文件发生更改时,我都需要对使用该属性文件的所有 puppet 模块进行级联更改。配置文件(分层查找)、模块 init.pp(从构造函数中添加/删除参数)和 config.pp(为属性文件调用“定义”时的参数调整)需要更改。

我觉得可以通过在属性文件的“定义”中合并 hiera 查找来解决上述问题,如下所示:

但是,以上违反了角色和配置文件模式。以上是在模块中进行分层查找,而不是在配置文件中进行。现在,该模块对 hiera 具有紧密的依赖关系。它是一个内部模块(不适合 puppet forge),我想,为了代码可维护性而违反准则应该是可以的。

我在上面征求其他人的意见。

0 投票
3 回答
74 浏览

css - 有没有自动维护css代码的工具

我有一个巨大的 CSS 文件,它应该有大约 20'000 行,不久前它被意外保存在一行上,使其极难阅读和维护。

我一直在寻找一种可以自动分隔 CSS 文件行的工具,但我发现这很困难,因为我找不到描述我所追求的英文定义。有谁知道有什么工具可以做到这一点?我确信这样的工具存在于某处。

这对我有很大帮助。谢谢。

0 投票
1 回答
487 浏览

java - 在 Drools 的“then”中进行 Java 调用的性能和可维护性

我正在开发一个 drools 项目,其中每个.drl文件都是从velocity template. then我已经编写了在.drl文件本身中成功检查条件后要执行的每个计算和操作。

让我们假设一个简单的条件

为了形成这些类型的 DRL 文件,我形成了velocity template like this

我知道#elseif( $rule.type == "% Amt" )可以通过利用前两个并同时满足这两个条件来消除最后if一个。但这只是一个例子。elseif|| $rule.type == "% Amt"

假设我没有任何选择将这 3 个条件简化为 2 个条件,而是重复我的代码本身。相信我,我有更多的计算,我必须在速度代码中重复这些代码多种类型。这变得一团糟。因为,如果我必须在公式中做一个小的改动,我必须对速度模板中的所有重复代码进行更改,如果我们错过了重复代码中的更改,这肯定会导致人为错误。

这就是为什么我想在 Java 类中编写这些公式和计算,并简单地在.drl. 所以.drl.vm

.drl

.vm

如果您想知道我重复了多少次折扣公式代码,我会说至少 10 次,并且对于多种类型的折扣计算涉及更多的重复。TBH,我在看.vm代码时很生气。由于所有这些代码重复和长期的可维护性差。我想知道是否坚持使用当前代码(当前 vm 代码涉及多个代码重复且难以维护)或者我是否应该通过实现我提出的结构将所有这些公式计算移至 Java 方法。我不知道它会对我的.drl文件性能产生多大影响。任何建议将不胜感激。

注意:我最喜欢代码可维护性。我不希望有人在他接手这个项目后打破他的脑袋。当然,我也不想在做任何小的改变时伤脑筋。

0 投票
7 回答
16614 浏览

python - if 语句过多

我有一些话题要讨论。我有一段 24if秒/elif秒的代码。Operation是我自己的类,表示类似于Enum.
这是一段代码:

从可读性的角度来看,我有一些担忧。将其更改为 24 个类并使用多态会更好吗?我不相信它会使我的代码可维护......一方面这些ifs 非常清楚,应该不难理解,另一方面有太多ifs。

我的问题相当笼统,但是我正在用 Python 编写代码,所以我不能使用switch.

你怎么看?


更新

一件重要的事情是StartObject(),StopObject()StatusObject()是构造函数,我想分配一个对象来strategy引用。

0 投票
4 回答
2397 浏览

c++ - (避免)在 C++ 中将代码拆分为 .cpp 和 .h 并进行高效编译

C++ 中的常见做法是将.h(or .hpp) 中的声明和实现分离到.cpp.

我知道两个主要原因(也许还有其他原因):

  1. 编译速度(当您只更改一个文件时,您不必重新编译所有内容,您可以make从预编译.o文件中链接它)
  2. 前向声明有时是必要的(当实现class A取决于class B和实现class Bon 时class A )......但我没有经常遇到这个问题,通常我可以解决它。

在面向对象编程的情况下,它看起来像这样:

QuadraticFunction.h

QuadraticFunction.cpp

main.cpp

然后像这样编译它makefile


但是,我发现它经常很不方便

尤其是当您大量更改代码时(例如,在开发的初始阶段,当您还不确定整个项目的整体结构时)。

  1. .cpp在对类结构进行重大更改时,您必须始终在.h部分代码之间来回切换。
  2. 您在编辑器和项目文件夹中有两倍的文件,这令人困惑。
  3. 你必须写一些信息(比如函数头或QuadraticFunc::)两次,在那里你可以做很多错别字和不一致,所以编译器总是抱怨(我经常犯这样的错误)
  4. 每次添加/删除/重命名某个类时,您都必须编辑Makefile,在这些错误中,您会犯很多其他难以从编译器输出中跟踪的错误(例如,我经常忘记编写 Makefile 以便代码重新编译我的每个依赖项编辑 )

从这个角度来看,我更喜欢 Java 的工作方式。出于这个原因,我只是通过将所有代码(包括实现)放入.h. 像这样:

使用通用默认生成文件,如下所示:

main.cpp保持不变)

然而,现在当我开始编写更复杂的程序时,编译时间开始变得相当长,因为我必须一直重新编译所有内容。

有什么方法可以利用make(更快的编译时间)的优势,并且仍然以类似 Java 的方式组织程序结构(所有内容都在类主体中,而不是单独的.h.cpp),我觉得这更方便?

0 投票
1 回答
26 浏览

magento - 如何将非侵入式设计更改应用于 Magento 1.X

我在这里安装 Magento 时遇到了一些麻烦,我从一家公司“继承”了该公司,该公司对该主题进行了一些非常繁重的定制。

我试图使大部分变化合理化,并且非常成功。现在的问题是,我有一些模板文件只有一行更改。

例如,在这种特定情况下,它<button>现在是一个<a>链接。这几乎只是 300 行模板文件中的一行。

扩展的布局文件也出现了类似的问题。他们在那里有一条脏线,例如重置整个布局。然后我需要在设计中覆盖完整的布局 XML 文件,只需在一行中进行一点更改,因为这些布局文件要么被覆盖,要么未被覆盖。不涉及合并过程。

我查看了 Magento 的设计者文档,但找不到任何有用的东西。我知道我可以在我的设计中对“local.xml”进行一些特定的布局更改,但这些或多或少是“无上下文的”,如果这些更改确实属于某个扩展,那就不是很好了。

您是否知道一种方法来应用前半部分中提到的小模板更改或部分布局文件覆盖?

我的主要目标是保持文件自动更新,这几乎意味着:下载模块,替换文件,完成。无需手动更新任何被覆盖的文件。

0 投票
0 回答
45 浏览

sql - 如何管理当前存储在文件服务器中的 SQL 源代码

我可以分享一下如何在所有不同供应商的文件系统中管理 SQL 查询。

我是一名数据分析师,每天都会编写很多不同的 SQL 查询。它们都是独立的查询,目前都存储在文件服务器中。最近,我在一年前基于查询功能从文件服务器开发的查询上遇到一个问题。我还发现有时可以通过简单的复制和粘贴在不同的查询之间重用子查询,当然,我确实在不同的查询中做了几次。但我的问题是我也不知道如何跟踪这一点。

你知道怎么做吗?

提前致谢!

0 投票
0 回答
639 浏览

python - python 库对 range 和 xrange 的兼容性

我有一个 python 库,我经常在其中使用以下类型的代码

现在我知道对于更大的值,范围将是一个怪物。

因此,我想使用 xrange 代替 range,但同时,我不希望用 lib 中的任何其他内容替换单词“range”,并希望它与 python 2.7 和 3.x 兼容。

这是当前的实现:

现在我有两个问题。

  1. 上述实现是否完美(请记住,代码不是用于通用目的,而是用于将由其他合作者维护的库)。如果没有,请提出一种方法(不使用任何其他模块)
  2. 请建议我的代码结构(我应该在其中保留上述代码并在必要时导入它的文件/目录名称)

谢谢。