标签: software-quality

为什么以析取范式表达代码很重要?

在我工作的公司,最近有一项规定,所有“高度可见”的布尔逻辑都必须以析取范式表示。

例如(尽管这个概念与语言无关),

#if (defined(A) || defined( B )) || (defined(C) && defined(D))
Run Code Online (Sandbox Code Playgroud)

必须替换为:

#if defined(A) || (defined(C) && defined(D)) || defined(B)
Run Code Online (Sandbox Code Playgroud)

强制要求代码必须以这种方式表达的动机是什么?有什么优点?

language-agnostic logic software-quality boolean-expression

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

如何估计pub.dartlang.org包的质量?

我启动了一个Dart项目,现在我需要一些Dart API Reference中没有的功能.我被建议使用pub.dartlang.org的软件包,现在我正在浏览酒吧.

以前使用Javascript库的经验告诉我,库之间的质量和支持可能会有很大不同.因此我有点不愿意使用pub中的包.我如何知道哪个包具有良好的质量,以及在Dart发生重大变化时是否会更新包?

所以我想知道:

  • 有没有办法知道pub.dartlang.org上哪些包可以安全地为长期项目选择?

与此相关的一些问题:

  • 将"Dart团队"作为作者的包装是否会得到长期支持?
  • 我是否更喜欢上传者在他们的电子邮件地址中使用@ google.com的套餐?
  • 是否有谷歌支持的包列表?(我想聚合物会在上面)
  • Google目前是否正在监控酒吧套餐的质量?

亲切的问候,
Hendrik Jan van Meerveld

software-quality package dart dart-pub

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

SOLID原则中的SRP是否会导致Lasagna Code?

使用SOLID原则特别是SRP,我们有很多类.
我的意思是,它就像你想要构建一个数据库类
那么,你有
DatabaseHandler类来处理数据库(选择,插入,更新,删除等),

DatabaseAdapter class是一个扩展的PDO类(可以在构造中设置首选的默认模式,一个新的prepare方法直接准备语句,将它与param绑定,然后执行它,

QueryBuilder类是SelectStatementBuilder类的父,InsertStatementBuilder类, DeleteStatementBuilder类,UpdateStatementBuilder类(用于构建SQLStatement),

Expression类,用于构建WHERE子句

SQLStatement Class中所需的表达式(其行为就像普通字符串,但其接口是SQLStatementInterface,因此我们可以知道它是一个SQL语句等.

而且,我知道如果我深入挖掘并重新进行重构,将会有更多的课程.

SRP原则实施是否导致了Lasagna代码?烤宽面条的代码好吗?

php oop software-quality single-responsibility-principle solid-principles

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

声纳重命名此方法;父类中有一个同名的“私有”方法

当我们使用父私有方法的相同名称时,Sonar抱怨类中的私有方法名称。在代码质量方面,用父私有方法的相同名称定义私有方法的缺点是什么?

还是我们需要将其归类为误报

java software-quality sonarqube

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

覆盖子类中的“标准”方法时,pylint W0622(重新定义内置)

在 Python 中,许多方法使用“标准化”名称定义参数变量,例如:

def __exit__(self, type, value, traceback):
Run Code Online (Sandbox Code Playgroud)

在上面的行中,变量类型导致 pylint 警告 (W0622) 正在重新定义内置函数:Redefining built-in 'type' (redefined-builtin)

有很多方法可以解决这个问题并使 pylint 满意(重命名变量,添加 pylint 指令(#pylint: disable=W0622)以忽略问题等)。

在这些情况下,保持良好的代码质量并使 pylint 满意的最佳/首选/建议/常规使用方法(如果有)是什么?

python warnings coding-style software-quality pylint

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

强制 pylint 分数合并到 github 分支上

我想设置一个质量检查,在授权某个 github 分支上的合并之前强制执行 pylint 的特定分数。有没有办法做到这一点 ?我在 github 上看到,您可以设置“合并之前需要通过状态检查”,我猜一个状态检查可能是 pylint 上的某个分数。

感谢您的任何指导。

python git software-quality github pylint

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

你如何确保第二次同样的bug不会进入产品?

我理解简短的答案是通过测试,但你仍然如何进行测试?您是否修改了测试用例以将错误包含在运行的其他测试用例中,或者您只是验证错误跟踪系统中从最旧版本到最新版本的所有错误.

谢谢你的回答.看起来我的问题不明确.我知道我们需要编写错误报告,修复错误并进行修复验证测试.但是,在下一个版本发布期间,测试阶段应该在下一个版本发布期间,我们确保再次重新运行测试以确保没有新的更改重新引入该错误.它是应该进行回归测试还是应该针对该特定项目进行集成测试,还是应该从1.0版开始测试bug跟踪系统中的所有错误?

testing qa software-quality release-management

4
推荐指数
3
解决办法
937
查看次数

"烤宽面条代码"这个词对你意味着什么?

根据维基百科的说法,该术语最初是由数据库专家Joe Celko在1982年创造的,这里引用了他1997年的文章,揭示了他的意思:"标准的[结构化编程]解决方案是用嵌套的IF-THEN取代GOTO -ELSE语句和交换机分层如此之深,冗余太多,你有一个控制路径,看起来像一盘烤宽面条."

然而,相同的维基百科条目定义了不同的术语,明确指的是多层应用程序:"......不同的子系统,例如...... Web应用程序代码,业务逻辑和关系数据库." 因此,随着程序员开发新的方法和体系结构,术语的含义也随之发展.

我可以想到两个"烤宽面条代码"的现代定义:

  1. 过度,过度设计或微不足道的软件应用程序层(显然)
  2. 软件应用程序的各个层,缺少适当隔离的单元测试.开发人员仅通过一次切片并消耗多个层来测试系统.

这个词显然意味着批评(就像你可以通过称之为"意大利面条代码"来批评我的东西).但这对你意味着什么,你什么时候使用它?

language-agnostic software-quality

4
推荐指数
2
解决办法
2871
查看次数

在C++中,两个浮点数平方和可以为负数吗?

我有一段计算两个平方之和的代码float

float a, b, c;
// assign some random float to b and c
a = b*b+c*c;
Run Code Online (Sandbox Code Playgroud)

a两个 s 的平方和可以float为负数吗?

原始代码片段位于函数内部,因此提出问题的另一种方式如下:

bool fun(float b, float c)
{
   return b*b+c*c<0;
}
Run Code Online (Sandbox Code Playgroud)

是否有任何一对值bc给出fun(b,c)==true

c++ floating-point software-quality

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

SQALE SonarQube等级

我正在使用声纳来分析一组相关的项目.我正在使用SQALE评级来证明重构的必要性

我的问题是SQALE技术债务比率映射背后的逻辑是什么?

为什么SQALE A评级是技术债务,范围从0%到5%.但不是0%到3%吗?我该如何定义SQALE评级限制?为什么5%的科技债务是好的?我可以使用任何方法吗?或者我必须自己提出这个标准?SonarQube有没有办法改变它们?

software-quality sonarqube

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