问题标签 [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 回答
523 浏览

sql - 添加/删除表的列 - 代码维护/优化

维护大型项目代码的最佳方法是什么?

假设您有 1000 个存储过程,并且您必须向表中添加新列(或删除)

可能有 1-2 或 30 个存储过程可能会受到影响。

仅对表名进行一次“搜索”可能还不够好,假设您只需要知道表插入/更新/删除的位置。

搜索 'insert tablename' 可能是个好主意,但您可能在这 2 个单词或 2 个空格之间有一个空格,或者一个 TAB ......也许表名写成 '[tablename]' 对于所有 3 个(插入/更新/删除。)

我基本上是在寻找某种“受限依赖”

如何以最好的方式处理?

  1. 保留一个包含此类信息的数据库表,并在每次更改存储过程时更改该表?

  2. 在每个插入/更新/删除旁边保留一些特定代码作为注释,这样您就可以搜索到您需要的内容?示例:'insert_tablename'、'update_tablename'、'delete_tablename'

  3. 有人有更好的主意吗?

0 投票
2 回答
281 浏览

java - 在 SQL 查询与(Java)代码中选择值

我需要使用表的可为空列上的列的值来选择整数的三个值之一。

至少有两种方法:1)使用 SQL 完成所有工作:测试空值,并在其他值之间进行选择,或者 2)读取值并使用代码(在本例中为 Java)进行选择。

哪个“更好”,即。更容易理解和更易于维护?您是否有任何其他指标用于决定?

例如,我有以下代码:

0 投票
0 回答
74 浏览

dictionary - 如何将“switch...case...”替换为“dictionary”以获得更好的可维护性

在我的代码中,我有开关盒,例如

“switch ... case ...”的增长导致代码的更多维护工作,我正在考虑如何将代码转换为字典或策略模式以获得更好的可维护性。

顺便说一下,按顺序 1 的属性,如"GROUPNAME","GROUPMASTERID"具有不同的类型,例如"GROUPNAME"in(x=>x.GROUPNAME)是字符串类型,但"GROUPMASTERID"in是(x=>x.GROUPMASTERID)int 类型。

谁能给我一些线索,非常感谢

0 投票
2 回答
530 浏览

python - 在python中添加墓碑

编辑:显然我所说的不是墓碑。我从这个视频中得到了这个词:https ://www.youtube.com/watch?v=29UXzfQWOhQ

我正在开发一个复杂的 django webapp,最近我开始考虑添加墓碑来检测旧的和未使用的代码。

是否有用于创建和管理墓碑的 python 库?如果没有,您对我建立这样的图书馆有什么建议?

0 投票
1 回答
24 浏览

javascript - 对象变量中的事件

你能像这样在对象变量中放置一个 jQuery 事件吗:

如果是这样,您将如何称其为方法?我可以将它绑定到一个事件吗?我问的原因是因为我正在尝试更改一些意大利面条代码(很多)并使其更易于维护而无需全部重写。任何见解将不胜感激。

0 投票
3 回答
302 浏览

java - 如何在 Java 中退出 if 和 try/catch 并在其他地方分支(如 goto)?

是否可以通过不使用标签(并且不重复太多代码或创建太多方法)来改进此 Java 代码?


编辑:

我使用break/犯了一个错误label。我将它们用作goto(code after lab1must be executed also if r!=null。这不是它们的目的,并且此类代码无法编译,因为 break 无法向前引用标签。我知道goto在 Java 中没有等效的(可以在任何地方分支的语句) .

Exception1我使用强制if退出外部的自定义编写了代码:

这不会是代码时尚竞赛的赢家,但至少它有效。感谢您的回答和评论。

0 投票
1 回答
63 浏览

c# - 如何设计一个在编译时以未知顺序遍历许多列表的算法?

我正在创建一个根据用户定义的设置处理数据的程序。在处理过程中,我有几个相关的列表必须根据这些用户自定义的设置进行迭代;用户决定迭代这些列表的顺序。

我想知道如何设计一种算法来迭代这些列表,同时仍然具有非常可维护的代码。这里的想法不是最终得到一个具有巨大 switch-case 的函数,其中每个 case 都对其中一个列表进行迭代。

示例:
假设我需要处理的数据是不同类型食物的列表。用户必须指定处理不同食物组的顺序。食物组只是存储杂项食物的列表:

用户想要的顺序存储在另一个列表中。下面描述了一种可能的顺序:

为了解释它是如何工作的,我将使用不需要的 switch-case:

在我的应用程序中,case 语句实际上将包含比示例中简单的 foreach 循环更多的代码。有没有更好的方法来设计这个算法?虽然没有必要,但我想知道是否还有一种可扩展的方式来设计这样的算法(添加/删除新的食物组不会破坏算法)。

0 投票
1 回答
73 浏览

maintenance - 在线应用程序维护的模式/实践?

我在一家小公司工作,该公司刚刚开发了一个非面向公众的在线应用程序,预期客户群很小。应用程序不大,但公司也不是,而且没有处理这个问题的基础设施。此外,我们是在线应用程序开发的新手,因为我们的经验只涉及桌面应用程序。

该应用程序将很快“上线”。到目前为止,我一直很随意地更新和使用部署平台作为沙箱。自然,这将改变。我们需要更严格的程序来评估变更、安全性并最大限度地减少错误和停机时间。

在线应用程序已经存在了足够长的时间,应该有大量文献记录维护模式和“最佳实践”。不幸的是,我找不到它们。谷歌搜索会发现虚假点击或内容很少的“白皮书”。

我会很感激任何消息来源。首选在线文章,但我会接受其他建议。

我不是在寻找关于什么是最好的意见,只是一些我可以用于进一步研究的资源。

0 投票
1 回答
577 浏览

oracle11g - 有没有办法查询 Oracle DB 服务器名称并在条件编译中使用?

当我遗漏了一行要更改的代码时,我有点试图维护在两个不同的 Oracle 11g2 系统上运行的代码包。我们在一个具有特定数据集的系统上进行开发,然后在另一个具有不同数据集的系统上进行测试。

差异不是很大,但包括需要在两个不同包中的两个不同查询中更改单个字段名称才能运行包。在一个系统上,我们使用一个字段,而在另一个系统上......另一个不同的字段。数据库具有相同的模式名称、对象名称和字段名称,但托管系统服务器名称不同。

更改实际上很简单

我错过了其中一个查询中的字段名称更改之一,而我们的多天运行是废话。

出于愚蠢的原因,我不会深入讨论,我最终维护了所有代码,包括必须在版本之间手动翻译和重新处理开发人员的更改,然后在系统之间传输和更新所需的更改。

我试图减少我必须提供的重复输入以换出代码——我想自动化这一步,这样我就不会再忽略它了。

我想实现条件编译,从 Oracle 中提取数据库系统的名称并自动进行单行交换——但 Oracle 条件编译需要一个包静态常量(在这种情况下为布尔值)。我不能使用 sys_context 函数来填充值。或者,它似乎不允许我从 sys_context 中提取数据并有条件地评估它并将其分配给一个常数。甲骨文没有。DB_DOMAIN、DB_NAME 或 SERVER_HOST 可能有助于区分系统,但我找不到使用这些信息的方法。

一个选项是创建一个全局常量,当我将代码移动到另一个系统时手动设置它,但此时,我有很多步骤要进行传输,我担心我什至会搞砸. 我想让它独立于其他包或我自己的进程。

有没有好的方法来做到这一点?

-------- 编辑我将尝试该程序并尝试找出周末的视图。最终,该项目将移交给希望“只运行它”的客户,因此他们不会理解任何开关的含义,或者为什么我在包中有“特殊”代码。而且,他们不需要……我什至不知道他们是否会看评论。谢谢

0 投票
1 回答
237 浏览

c# - 谁能告诉我为什么这段代码的可维护性指数只有 40?

我不明白为什么这种方法的可维护性指数(在 Visual Studio 中计算)只有 40,我实际上必须删除除前两行之外的几乎所有行以达到 60 以上: