问题标签 [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 投票
4 回答
480 浏览

css - CSS 子宽度 100% 或 px 问题

也许是一个简单的问题,一个简单的答案。

今天我想知道以 px 或 100% 为单位的子宽度之间有什么区别,当子宽度与父宽度完全相同时。结果将与我知道的相同,但是最好使用什么?

例子;

有关系吗?你用哪个?

0 投票
7 回答
7725 浏览

architecture - 编写可维护的事件驱动代码

我最近刚开始使用事件驱动架构,来自非常标准的面向对象的思维方式。

我注意到的第一件事是,理解和跟踪程序的难度似乎随着程序的大小呈指数增长。虽然小型宠物项目很容易遵循,但感觉代码会很快变成意大利面条。

我知道我是这种开发思维的新手,并不是我所有的面向对象的担忧都会继续存在。是否有任何关于编写可维护、可理解的事件驱动代码的资源?使用 node.js 或 Twisted 或 Event Machine 的人对此做了什么?

0 投票
3 回答
376 浏览

django - django 会创建一个干净的数据库吗?

我正在为学校的数据库构建 Web 界面。该数据库将保存我们学校的学术标准版本。

当您使用 django 构建站点时,它会创建一个干净的数据库吗?例如,dreamweaver 之类的所见即所得网站构建器在后端创建丑陋的 html 和 css 代码。我不想在我的数据库中看到类似程度的自动生成的垃圾。

我应该自己创建数据库,然后构建一个 django 站点来访问数据库,还是继续让 django 创建数据库?

0 投票
5 回答
186 浏览

c# - 我该如何组织这段代码?

myThread 是一个每秒执行的函数,基本上它读取一些必须解析和执行的数据。该函数增长了很多,它有超过 1500 行代码,如下面的示例,其中有很多 [if else if else] 块很多重复,例如 sleep 或 SendToChat 以向控制台发送命令,并且很难维护,对其进行更改等。

我想要一些关于如何重写它的建议(如果可能的话,这将有助于我理解布局),我不是很有经验,所以我不太确定将这段代码变成更好的代码的可能性可维护性和可读性 ?

也可以随意评论任何功能或其他任何事情,因为它可以帮助我改进其他错误的事情。

这只是代码的一些示例,而不是整个代码,如果您觉得您需要代码中的任何其他信息,请随时询问,我会尽快发布。

PS:这不是irc的事情。

0 投票
5 回答
586 浏览

linq - 您会将您的 LINQ 查询抽象为扩展方法吗

在我当前的项目中,我们为代码指标“可维护性指数”和“循环复杂性”设定了一些目标。可维护性指数应为 60 或更高,循环复杂度应为 25 或更低。我们知道 60 或更高的可维护性指数是一个相当高的指数。

我们还使用很多 linq 来过滤/分组/选择实体。我发现这些 linq 查询在可维护性指数上的得分并不高。将此查询抽象为扩展方法给了我更高的可维护性指数,这很好。但在大多数情况下,扩展方法不再是通用的,因为我将它们与我的类型而不是通用类型一起使用。

例如下面的 linq-query vs 扩展方法:

LINQ查询

扩展方法:

扩展方法使我的可维护性指数提高了 6 分,并提供了流畅的语法。另一方面,我必须添加一个静态类,它不是通用的。

关于哪种方法会让您受益的任何想法?或者可能对如何重构 linq 查询以提高可维护性索引有不同的想法?

0 投票
2 回答
127 浏览

java - 使支持应用程序更容易的指南/想法

编写一个高质量的软件应该是第一步。现在这是一个移动的目标。(我们有一些类似https://stackoverflow.com/questions/3716203/automatic-code-quality-and-architecture-quality-static-code-analysis的东西。我们也具有类似于某些选定客户的回归测试套件和测试环境。)无论我们做什么,都存在只有客户才能看到并遇到崩溃/错误的情况。有时他们只是有性能问题。有时是崩溃,有时是应用程序对象模型错误。

一般来说,我怎样才能减轻疼痛?我怎样才能从这种情况中获得大部分(数据)?当问题第一次和第二次出现时,什么样的编码/架构步骤可以帮助获取更多信息?

以下是起点:

良好的日志记录: log4j 是起点。用户应该能够轻松更改文件。提供一个小的 gui 来编辑这样的文件会更好。(我们的日志配置位于 Windows 7 中的 c:/Program Files/ 区域;对于普通用户而言不容易进行编辑 - 需要神奇的“以管理员身份运行”选项。)。

堆转储:当内存不足时转储堆。

自动提交错误报告: Firefox、intellij 等就是很好的例子。不确定是否有现成的库。

JMX:对于服务器应用程序,这似乎非常有用。我从来没有用过它。

检测系统要求的工具: 我还没有做。

自动升级能力:

我们的主要是与服务器交互的java桌面应用程序。我想我们可以采取更多步骤,直到我们获得所需的质量:)

0 投票
1 回答
515 浏览

android - Android 模式:每个项目启动不同 Activity 的 Spinner

我正在尝试构建一个复杂的表单,其中几乎所有元素都是可选的。它从一个字段和一个“添加元素”按钮开始。当您单击添加时,表单会显示Spinner您可以添加到表单中的元素类型(位置、照片、详细说明、“现在”以外的时间戳等)。当您选择一个项目时,它将启动一个Activity,并且每个项目都有一个不同的关联Activity

此外,每个选项都会有几位数据,以Activity某种方式“与”一起存储会很好:

  • 图标和显示的名称Spinner
  • 用于将数据存储在数据库中的密钥(以及传递给 Web 服务)
  • 如何在原始表单上显示结果的布局(即照片的缩略图、位置的纬度/经度等)

我正在考虑一组类,它们都扩展了一个抽象FormElement类,并且对于上述每个额外的数据都有静态元素。Resources(这个解决方案的另一个问题是在静态环境中有多少痛苦。)

我怎样才能使它尽可能干净和可维护?我真的不喜欢编辑五个不同的文件来为这个表单添加一种新类型的元素。(主要是因为我可以保证我会错过一个并花几个小时追查 unbugs。)

0 投票
4 回答
123 浏览

c++ - 哪种演员风格更好,为什么?

想象在 C++ 中有两个类,一个命名derived,另一个命名base为第一个的基类。如果我有以下代码,这是首选:

或者

换句话说,const由于编译器可以提升为常量,因此在不需要时排除在静态强制转换中是否更好,或者最好将其包括在内以放宽对它的限制,b以便const将来更容易制作?

0 投票
6 回答
28817 浏览

php - 在 MySQL 与 PHP 中进行计算

语境:

  • 我们有一个 PHP/MySQL 应用程序。
  • 某些部分的计算直接在 SQL 中完成。例如:过去 24 小时内创建的所有用户都将通过 SQL 查询返回(NOW() – 1 天)

一位开发人员和我之间正在进行一场辩论,我认为我们应该:

A. 将所有计算/代码/逻辑保存在 PHP 中,并将 MySQL 视为“愚蠢”的信息存储库

他的意见:

B. 根据更容易/更快的情况进行混合和匹配。http://www.onextrapixel.com/2010/06/23/mysql-has-functions-part-5-php-vs-mysql-performance/

我正在研究可维护性的观点。他关注的是速度(正如文章所指出的,MySQL 中的某些操作更快)。


@bob-the-destroyer @tekretic @OMG Ponies @mu 太短了 @Tudor Constantin @tandu @Harley

我同意(而且很明显)高效的 WHERE 子句属于 SQL 级别。但是,例如:

  1. 在 SQL 中使用 NOW() - 1 day 计算 24 周期以选择过去 24 小时内创建的所有用户?
  2. 返回所有用户的大写名字和姓氏?
  3. 连接一个字符串?
  4. (想法,伙计们?)

属于 SQL 域的明确示例:

  1. 特定的 WHERE 选择
  2. 嵌套 SQL 语句
  3. 订购/排序
  4. 选择 DISTINCT 项目
  5. 计数行/项目
0 投票
6 回答
5452 浏览

c# - 如何使用 InvalidEnumArgumentException 维护代码?

我很好奇一旦你抛出一个你将如何维护你的代码System.ComponentModel.InvalidEnumArgumentException.

基本上我有一个这样的 switch 语句:

例如,如果我决定MyEnum在未来添加更多值怎么办?Value3Value4添加更多的值怎么办?这意味着我最终会抛出一个误导性的异常。我将如何防止这种情况?

我应该在投掷前使用反射吗?在这种情况下我应该抛出什么异常?我正在寻找建议。


几分钟前我刚刚发现了这个异常,所以也许我在错误的上下文中看待这个。当某个枚举参数不受支持时(在这种情况下Value3并且Value4不支持),是否会引发此异常?