标签: code-maintainability

谁写了这个编程说?"总是编码好像最终维护你的代码的人会是一个知道你住在哪里的暴力精神病患者."

总是编码好像最终维护你的代码的人将是一个知道你住在哪里的暴力精神病患者.

我在某人的博客上发现了这一点,并将其作为Rick Osborne的介绍.但我谷歌这个,其他人说:Martin Golding,John Woods和Damian Conway的......是的,Damian Conway在" Perl Best Practices "(2005)中引用了这句话,但Damian没有提到是谁写的.

有谁知道这个格言的真正作者是谁?

quotes code-maintainability

147
推荐指数
2
解决办法
5万
查看次数

我可以在SQL Server的add column语句中创建命名的默认约束吗?

在SQL Server中,我在表上有一个新列:

ALTER TABLE t_tableName 
    ADD newColumn NOT NULL
Run Code Online (Sandbox Code Playgroud)

这失败是因为我指定了NOT NULL而没有指定默认约束.该表不应具有默认约束.

为了解决这个问题,我可以使用默认约束创建表,然后将其删除.

但是,似乎没有任何方法可以指定默认约束应该作为此语句的一部分命名,因此我摆脱它的唯一方法是使用一个存储过程在sys.default_constraints中查找它表.

对于可能发生很多事情的操作来说,这有点混乱/冗长.有没有人有更好的解决方案呢?

sql-server constraints alter-table code-maintainability

144
推荐指数
3
解决办法
7万
查看次数

在进行单元测试时,100%的代码覆盖率是否真的很好?

我总是了解到使用单元测试进行最大程度的代码覆盖是很好的.我还听到像微软这样的大公司的开发人员说他们编写了比可执行代码本身更多的测试代码.

现在,这真的很棒吗?它有时似乎完全没有时间损失,只会使维护更加困难吗?

例如,假设我有一个方法DisplayBooks()可以填充数据库中的书籍列表.产品要求表明,如果商店中有超过一百本书,则只能显示一百本.

所以,有了TDD,

  1. 我将首先进行单元测试BooksLimit(),这将在数据库中保存两百本书,调用DisplayBooks()并执行Assert.AreEqual(100, DisplayedBooks.Count).
  2. 然后我会测试它是否失败,
  3. 然后我会DisplayBooks()通过将结果限制设置为100来改变
  4. 最后,我将重新运行测试,看看它是否成功.

那么,直接进入第三步是不是更容易,而且根本不进行BooksLimit()单元测试?当需求从100个书籍限制改为200个限制,更改只有一个字符而不是更改测试,运行测试以检查它是否失败,更改代码并再次运行测试以检查是否成功时,是不是更敏捷?

注意:我们假设代码已完整记录.否则,有些人可能会说,他们是对的,进行完整的单元测试将有助于理解缺乏文档的代码.实际上,进行BooksLimit()单元测试将非常清楚地显示存在最大数量的书籍,并且该最大数量为100.进入非单元测试代码将更加困难,因为这样的限制可能是虽然for (int bookIndex = 0; bookIndex < 100; ...或实施foreach ... if (count >= 100) break;.

documentation tdd unit-testing code-maintainability

28
推荐指数
4
解决办法
7350
查看次数

JQuery类选择器vs id选择器

我有7个不同的按钮,点击时都执行相同的JavaScript功能.我应该使用类选择器或id选择器.

$("input.printing").on("click", function(event) {
     printPdf(event);
});
Run Code Online (Sandbox Code Playgroud)

要么

   $("#package1Pdf").click(function(event) {
         printPdf(event);
   });
$("#package2Pdf").click(function(event) {
         printPdf(event);
   });
$("#package3Pdf").click(function(event) {
         printPdf(event);
   });
$("#package4Pdf").click(function(event) {
         printPdf(event);
   });
Run Code Online (Sandbox Code Playgroud)

每个的优点和缺点是什么?哪个更优选.

performance jquery jquery-selectors code-maintainability

12
推荐指数
1
解决办法
1万
查看次数

if语句太多了

我有一些话题需要讨论.我有一个24 ifs/elifs 的代码片段.Operation是我自己的类,表示类似的功能Enum.
这是一段代码:

if operation == Operation.START:
    strategy = strategy_objects.StartObject()
elif operation == Operation.STOP:
    strategy = strategy_objects.StopObject()
elif operation == Operation.STATUS:
    strategy = strategy_objects.StatusObject()
(...)
Run Code Online (Sandbox Code Playgroud)

从可读性的角度来看,我有一些顾虑.更好的是将它改成24个类并使用多态?我不相信它会使我的代码可维护......从一方面来说,这些代码if非常清晰,并且不应该难以理解,另一方面,有太多if的代码.

我的问题相当普遍,但是我用Python编写代码所以我不能使用像switch.

你怎么看?


更新:

一个重要的是StartObject(),StopObject()并且StatusObject()是构造函数,我想分配一个对象来strategy引用.

python conditional if-statement code-readability code-maintainability

9
推荐指数
1
解决办法
7808
查看次数

MySQL 数据库设计 - 存储图像 - 单表或多表

我目前在一个产品中工作,其中有不同类型的图像,如产品图像、用户个人资料图片、徽标等。我需要一个具有良好查询性能的数据库。

我想到了两个数据库设计。

选项 1. - 将所有图像存储在一个带有 id、title、url_full、url_thumb、状态和时间戳字段的表中

好处

  1. 我可以使用单个 ImageModel 文件插入删除/更新数据。所以不会有图像存储的多重逻辑。它只是一个逻辑,“存储在单个表中”。所以每当需要保存图像时,我可以调用 ImageModel 的方法

缺点

  1. 如果产品图片多,用户图片少,由于产品数量庞大,用户图片查询会变慢。

选项 2. - 使用 id、title、url_full、url_thumb、status 和 timestamp 字段在不同的表中存储不同类型的图像

好处

  1. 增加一个部分的记录数不会影响其他部分的查询速度

缺点

  1. 必须为每种图像类型编写单独的模型文件/函数。
  2. 每当必须存储图像时,都需要指定类型。

我的问题是,这是更好的方法。优点和缺点是否真正值得关注。此外,如果还有其他优点/缺点,请列出。或者如果有任何其他神数据库设计,请提出建议。

请根据产品多、用户多的实际场景来回答。

mysql architecture performance database-design code-maintainability

9
推荐指数
1
解决办法
2628
查看次数

java 1.5:保持db表列名的常量的最佳实践?

技术: - Java 1.5或1.6 - Hibernate 3.4

为了避免在更改列名或表名时更改多个位置上的列名,我希望有一个常量文件.

我有以下疑问?

  • 一种可能的解决方案是维护一个全局文件,该文件存储数据库中所有表的列名的常量.喜欢

    class DbConstants
    {
            public static final String EMPLOYEE__PERFORMANCE_DESC="performance_desc";        
    } 
    
    Run Code Online (Sandbox Code Playgroud)

在上面的情况中,employees是表的名称,performance_desc是列名的名称.因此,如果两个表都有列名,则遵循一种tablename__columnname格式来命名一个常量,以避免两个不同表的两个常量之间发生冲突.

我看到这种方法的一个问题是,随着数据库的增长,该文件中没有任何常量将增长到数千个,这很难管理.其他问题是如果更改了表名,我必须更改所有表的前缀表名.

  • 假设我将上面示例中的列名称从performance_desc更改为achievement_desc.在这种情况下,我很可能也想改变常数,即从EMPLOYEE__PERFORMANCE_DESC到EMPLOYEE__ACHIEVEMENT_DESC.因为在这种情况下我需要更改列名和常量名称我没有看到在我的代码中直接使用常量而不是列名的用处尽管有一个好处,在更改常量名称时我可以使用折射来反映常量名称名称在引用的地方更改.似乎要么没有太多使用常量,要么我错误地使用它.

  • 在项目代码中,我似乎有人为每个表列列表定义一个类来定义常量,如下所示.

    public class tbl_Employee
    {
            public static final PERFORMANCE_DESC=performance_desc;
    }    
    
    Run Code Online (Sandbox Code Playgroud)

这可以解决一些与全局文件一样的问题,比如表名更改只会导致类名更改.这个问题的一个主要问题是我使用类仅用于定义不是良好编码实践的常量.

  • 阅读一些有关值字符串Enum的内容而不是int不确定它是否可用于java 1.5或1.6以及是否建议在给定方案中使用它.

  • 定义db常量的最佳做法是什么?

  • 使用db常量真的很有用吗?

  • 如果我像上面提到的那样为每个表使用一个类,我面临的一个问题是命名约定.表的名称和对应的类名称之间应该有什么关系,它们定义表的列的常量.

  • 以上案例仅涵盖列名而非表名的情况.我可能想在代码中使用常量而不是表名,因此应该为表名定义常量.

  • 经常有人认为,一旦产品或相关版本发布,表名和列名就不会发生太大变化.表名和列名的更改主要发生在开发阶段或功能增强(新版本)期间.避免对表名或列名使用常量是否是强有力的论据?

    请建议我如何才能使我的问题更具代表性,或者我错过了哪些问题未被投票?

java database constants columnname code-maintainability

7
推荐指数
1
解决办法
5437
查看次数

嵌入式软件可维护性 - 配置

我正在开发一种嵌入式软件,可以在两到三个不同的微控制器系列上运行.现在我们有makefile,它读取配置开关并进行编译.

对于开发人员和非开发人员来说,使用编译开关和构建配置保持更新的过程变得越来越乏味.我知道Linux内核使用ncurses来生成编译配置.我正在寻找一个类似的工具,但跨平台.它应该在Windows和Linux上运行.我知道这仍然无法解决问题,但它对非开发人员更有吸引力,我也可以快速共享我的.config文件或将其与现有文件进行比较.配置将按特定顺序排列,这里的diff工具将有所帮助.

任何人都可以与类似的项目维护或参考项目(多个微型嵌入式和通用代码库)分享他们的经验.只想了解最佳实践.

PS:语言使用C,8/16位微处理器,没有操作系统只是基于计时器的批处理调度程序(裸机)

c embedded makefile code-maintainability

6
推荐指数
1
解决办法
300
查看次数

在Objective-C中组织头文件的常规方法是什么?

我开始.h以最好的意图组织我的文件但不知何故他们变得令人作呕的凌乱.

下面是一个例子(这不是那么糟糕,但我看到更糟糕!).我尝试过分组,#pragma mark但看起来看起来更加混乱.

所有UILabel和UIButtons都是必需的(如上所述),因为它们显示来自Web服务请求的数据,因此如果我们使用Interface Builder来设计GUI,则它们都是必需的.例如,标签可能是产品的"重量"或"高度"特征.

有没有人对如何以最易维护/可读的方式组织这些有任何好的建议?

干杯

替代文字

iphone objective-c code-readability code-maintainability

5
推荐指数
0
解决办法
96
查看次数

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

C ++的常见做法是将.h(或.hpp)中的声明和实现分隔为.cpp

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

  1. 编译速度(仅更改一个文件就不必重新编译所有文件,可以通过make预编译的.o文件进行链接)
  2. 前向声明有时是必需的(当执行class Adepends class Bclass Bon时class A )...但是我没有那么多问题,通常我可以解决它。

对于面向对象的编程,它看起来像这样:

QuadraticFunction.h

class QuadraticFunc{
    public:
    double a,b,c;
    double eval ( double x );
    double solve( double y, double &x1, double &x2 );
};
Run Code Online (Sandbox Code Playgroud)

QuadraticFunction.cpp

#include <math.h>
#include "QuadraticFunc.h"

double QuadraticFunc::eval ( double x ){ return c + x * (b + x * a ); };

double QuadraticFunc::solve( double y, double …
Run Code Online (Sandbox Code Playgroud)

c++ makefile code-organization code-maintainability

2
推荐指数
1
解决办法
945
查看次数

CSS子宽度100%或px问题

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

今天我想知道当孩子的宽度与父母的宽度完全相同时,px或100%的子宽度之间有什么区别.结果将与我所知的相同,但最好使用什么?

例;

div {width: 300px;}
h1 {width: 300px;} /*or..*/
h1 {width: 100%;}

<div>
<h1>Width of child</h1>
</div>
Run Code Online (Sandbox Code Playgroud)

有关系吗?你用哪个?

css maintainability code-maintainability

1
推荐指数
1
解决办法
472
查看次数

我该如何管理太多的TCL程序?

我和我的团队一直在研究多种工具流程.

我们不断在同一个文件中添加新过程或在同一目录中创建新文件.还有很多嵌套程序; 一个人叫别人.

程序的数量只会不断增加,流程涉及至少10个喜欢做自己的事情的人.

我的问题是,我们将如何以整洁的方式管理所有这些程序?

tcl code-maintainability

1
推荐指数
1
解决办法
73
查看次数