我有这段代码,它是将Ojbect写入字节数组流:
static byte[] toBytes(MyTokens tokens) throws IOException {
ByteArrayOutputStream out = null;
ObjectOutput s = null;
try {
out = new ByteArrayOutputStream();
try {
s = new ObjectOutputStream(out);
s.writeObject(tokens);
} finally {
try {
s.close();
} catch (Exception e) {
throw new CSBRuntimeException(e);
}
}
} catch (Exception e) {
throw new CSBRuntimeException(e);
} finally {
IOUtils.closeQuietly(out);
}
return out.toByteArray();
}
Run Code Online (Sandbox Code Playgroud)
然而,FindBugs一直在抱怨线:
s = new ObjectOutputStream(out);
Run Code Online (Sandbox Code Playgroud)
"可能无法关闭流" - BAD_PRACTICE - OS_OPEN_STREAM.有人可以帮忙吗?
我想知道是否有人有用于衡量软件质量的指标的经验.我知道有代码复杂度指标,但我想知道是否有一种特定的方法来衡量它在生命周期中的实际执行情况.我不是指运行时性能,而是质量的衡量标准.任何有助于收集这些工具的建议工具也是受欢迎的.
有没有测量来回答这些问题:
似乎大多数情况需要与CM和错误报告工具密切相关.
我在一家公司工作,有数百人为基本相同的产品编写软件.软件的质量必须很高,因为很多人都依赖它(尤其是开发人员自己).因此,每个主要问题都导致了新的检查 - 自动或手动.
结果,交付软件的过程变得越来越繁重.所以这需要更多的开发人员......你可以看到它是一个恶性循环.
我们现在有一个快速发布软件的问题 - 即使为一个非常严重的问题更改一行代码的前置时间至少是一天.
您使用什么技术来加速大型组织中的软件交付,同时仍保持软件质量?
在为嵌入式处理器(DSP)编写的C++代码库中,我可以期待什么样的缺陷率,因为没有单元测试,没有代码评审,没有静态代码分析,并且编译项目会产生大约1500个警告.5个缺陷/ 100行代码是否合理估计?
首先,我会说我来自Java世界(这很重要,真的).
我已经编写了一段时间的PHP,我遇到的一个问题是由于缺少编译,有时可能在编译时很容易检测到错误(例如,给定函数的参数数量错误),可以默默地通过.
通过添加单元测试,可以轻松检测到代码覆盖率增加.问题是,例如测试构造函数以检查传递的参数是否正确是否有意义?我不是指参数的数量,而是指这些参数的内容(例如,如果参数为null,某些对象应该启动异常以避免创建"脏"对象).
问题是,我是否被多年的Java代码污染了?因为毕竟,增加代码覆盖率以"发现"错过的函数感觉就像(真正)原始的编译方式.
另外,我想说明我已经使用了开发环境(PHPStorm),我们也使用了像PHPCodeSniffer这样的工具.
有什么想法/建议吗?
我正在使用codacy来监控代码质量,但是看看在推送之前会遇到什么样的代码会很好.我看到它使用eslint和其他几种工具来决定捕获什么.有没有办法从codacy生成.eslintrc配置文件?这样我就可以在Webstorm中使用此配置,并在推送任何代码之前进行任何必要的更改.
来自PHP世界,只有一种方法可以编写异常处理..我发现Java中的异常包装有点"丑陋":
public void exampleOneException(String input) throws MyBusinessException {
try {
// do something
} catch (NumberFormatException e) {
throw new MyBusinessException("Error...", e);
}
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢使用这种风格:
public void exampleTwoException() {
try {
// do something
} catch (MyBusinessException e) {
log.error("Error...: " + e);
} catch (NumberFormatException e) {
log.error("Error...: " + e);
}
}
Run Code Online (Sandbox Code Playgroud)
这些处理例外的方法有什么不同或最佳做法吗?
关于代码度量的讨论已经相当多(例如:对代码度量的迷恋是什么?).我(作为软件开发人员)对这些指标非常感兴趣,因为我认为他们可以帮助人们编写更好的代码.至少它们在寻找需要重构的代码区域时很有帮助.
但是,我想知道的是以下内容.是否对这些源代码度量标准进行了一些评估,证明它们确实与错误率或方法的可维护性相关.例如:具有非常高的圈复杂度的方法是否真的比复杂度低的方法引入更多错误?或者,具有高难度级别(Halstead)的方法是否真的需要比具有低难度的方法更多的维护它们?
也许有人知道这方面的一些可靠的研究.
非常感谢!
我们一直在努力提高我们应用技能来解决问题的能力.软件工程原理极大地帮助我编写更高质量的代码.这包括测试,模块化,在适当的地方使用OO等.
这是我在JS中实现模块化的一个例子.也许这是实现这一目标的一种不好的方式,但它可以作为我的意思的一个例子,并包含一些自己的问题.
framework.js
Framework = {
CurrentState : {
IsConfigurationLoaded : false,
IsCurrentConfigurationValid : false,
Configuration : undefined //undefined .. good? bad? undefined?
},
Event : {
//event lib
},
//you get the idea
}
Run Code Online (Sandbox Code Playgroud)
题:
您在哪些方面应用软件工程原理来提高JS的可读性,可维护性和其他质量属性?
其他相关(更具体)的问题有助于回答:
我曾经写过一个简单的JS单元测试框架,它有简单的断言和一个带有lambda的测试助手方法.您对单元测试javascript有何看法?
定义代码和框架之间的边界有多重要?
JS主要用于浏览器或网站.这会减少/消除某些顾虑吗?
您是否建议使用Classes和OO原则?
使用undefined和/或null?它应该被禁止吗?
使用try/catch?建议?
你什么时候从JSON去上课?您是否使用对数据进行操作的Util方法?
使用原型?建议?你不会使用它的好例子是什么?
我试图让我的代码更容易扩展,因为一点点的改变不会影响其他代码。
我有一个enum MyEnum,其值将来可能会增加。
然后,有一些类保存它的实例,并且许多行为受到该enum的具体值的影响。换句话说,有很多地方我切换了它的值。
public enum MyEnum
{
FIRST, SECOND, THIRD, FOURTH;
}
public class A
{
private MyEnum myEnum
public A(MyEnum myEnum)
{
this.myEnum = myEnum;
}
// as you will see, there is a lot of switching over its value
public void boo()
{
switch(myEnum)
{
case FIRST: // do smtng
case SECOND: // do smthing else
case THIRD: // do smthing else
case FOURTH: // do nice thing
}
}
public int goo() …Run Code Online (Sandbox Code Playgroud) software-quality ×10
java ×3
javascript ×2
c++ ×1
codacy ×1
code-metrics ×1
embedded ×1
enums ×1
eslint ×1
exception ×1
findbugs ×1
metrics ×1
performance ×1
php ×1
phpunit ×1
process ×1
stream ×1
unit-testing ×1
webstorm ×1