最近我们讨论了局部变量对Java代码的性能与可读性的影响.我的一些同事的意见是这样的声明
new DoSomethingCmd(new SelectionContext(context, keys), infoStuff.getCurrentRole().getRole_id()).execute(getResultContainer());
Run Code Online (Sandbox Code Playgroud)
将为应用程序提供相当大的性能提升.他们愿意为此牺牲代码可读性.他们是否正确地声称这个?上述版本的性能是否比这个版本高得多?
final SelectionContext selectionContext = new SelectionContext(context, keys);
final String roleId = infoStuff.getCurrentRole().getRole_id();
final DeleteSomethingCmd deleteSomethingCmd = new DeleteSomethingCmd(selectionContext,roleId);
deleteSomethingCmd.execute(getResultContainer());
Run Code Online (Sandbox Code Playgroud)
我意识到第一个语句本身并不难以掌握,但是当大多数代码都是这样构造时,复杂性会相当快.
谢谢您的意见.
当您在SQL查询中有一个长字段时,如何使其更具可读性?
例如:
public function findSomethingByFieldNameId($Id) {
$sql = "SELECT field1, field2, field3 as Field3_Something, field4, field5, field6, field7, field8, field9
FROM table
JOIN table2 AS TNS ON TNS.id = table.id
WHERE something = 1";
return $this->db->fetchData($sql, null, 'all');
}
Run Code Online (Sandbox Code Playgroud) 我习惯试驾我的代码.现在我是Go的新手,我正试图尽快做到正确.我在标准库中使用测试包似乎已经足够好了.(我也喜欢它不是另一个外部依赖.我们目前总共有2个依赖项 - 与任何Java或Ruby项目相比.....)无论如何 - 看起来像golang中的断言看起来像这样:
func TestSomething(t *testing.T) {
something := false
if something {
t.Log("Oh noes - something is false")
t.Fail()
}
}
Run Code Online (Sandbox Code Playgroud)
我觉得这个很冗长,而且想在一行上做:
Assert( something, "Oh noes - something is false" )
Run Code Online (Sandbox Code Playgroud)
或类似的东西.我希望我在这里错过了一些明显的东西.什么是最佳/惯用的方式去做?
更新:只是为了澄清.如果我要做这样的事情:
func AssertTrue(t *testing.T, value bool, message string) {
if value {
t.Log(message)
t.Fail()
}
}
Run Code Online (Sandbox Code Playgroud)
然后像这样写我的测试
func TestSomething(t *testing.T) {
something := false
AssertTrue(t, something, "Oh noes - something is false")
}
Run Code Online (Sandbox Code Playgroud)
那么它会不会是去的方式来做到这一点?
新的基于范围的for循环确实提高了可读性,并且非常易于使用.但是,请考虑以下事项:
map<Foo,Bar> FooAndAssociatedBars;
for (auto& FooAndAssociatedBar : FooAndAssociatedBars) {
FooAndAssociatedBar.first.doSth();
FooAndAssociatedBar.second.doSomeOtherThing();
}
Run Code Online (Sandbox Code Playgroud)
它可能是一个细节,但我发现如果我能做到这样的话会更具可读性:
for ( (auto& foo, auto& bar) : FooAndAssociatedBars) {
foo.doSth();
bar.doSomeOtherThing();
}
Run Code Online (Sandbox Code Playgroud)
你知道一个等价的语法吗?
编辑: 好消息:C++ 17有一个解决这个问题的提议,称为结构化绑定(见1).在C++ 17中,您应该能够编写:
tuple<T1,T2,T3> f(/*...*/) {
/*...*/
return {a,b,c};
}
auto [x,y,z] = f(); // x has type T1, y has type T2, z has type T3
Run Code Online (Sandbox Code Playgroud)
这解决了这个可读性问题
假设您正在制作博客软件,并希望显示条目获得的评论数量.你可以这样做:
[Entry title]
[Content........]
[ <?php print($numComments;) ?> Comments]
Run Code Online (Sandbox Code Playgroud)
这可能导致:
[Entry title]
[Content........]
5 Comments
Run Code Online (Sandbox Code Playgroud)
但如果一个条目只有1个评论,我希望该行说"评论"而不是"评论".并且内联if/elses是丑陋和重复的.
处理这个问题的最佳方法是什么?
我遇到过一篇讨论"代码钦佩"问题的文章.基本上,作者讨论了开发人员应该如何对他们编写的代码持更多怀疑态度.我们如何过分"钦佩"我们的代码,将自己与自己联系起来,使我们更容易受到可能在我们面前的错误和其他不幸事件的影响.
你觉得这个问题怎么样?您是否有关于如何避免/更多地意识到这个问题的更多提示?
我正在寻找一种适用于Windows的工具,可以在我的代码库中重新格式化一些C++代码.基本上,我有一些我之前写过的代码,我想使用它,但它与我在最近的项目中使用的样式不符.
以标准方式重新格式化C++代码的最佳方法是什么?
Billy3
我意识到,作为一名编程学生,我最大的弱点就是我很难理解其他人的代码.
我对"教科书"代码或明确注释的代码没有任何麻烦,但是当给出几百行的程序,包含十几个不同的函数而没有注释时,我发现它甚至很难开始.
我知道这种类型的代码是我在职业生涯中可能遇到的代码,我认为代码理解能力差对我来说是一个很大的障碍,所以我想专注于提高我的技能在这方面.
哪些工具/技术有助于提高您的体验中的代码理解力?
你如何处理不熟悉的,未注释的代码?为什么?你认为你的技术有用吗?
谢谢
我有一些话题需要讨论.我有一个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
我目前正在撰写正式的研究报告,我将在此报告中包含代码.
问题:是否有可接受的方式在研究报告中显示代码?我在考虑字体,间距等问题,以及代码是应该在文档内部还是在附录中显示.
代码将是JavaScript和PHP.代码的所有部分都不会超过25行(因此它们仅仅是片段).将有大约六个片段.每个片段都有几个段落,解释代码中发生的事情,并讨论其优缺点.
我没有与提交报告的机构联系,也没有关于如何格式化代码的公布指南(请不要质疑这些要点).
code-readability ×10
readability ×4
c++ ×2
c++11 ×1
coding-style ×1
conditional ×1
dictionary ×1
foreach ×1
go ×1
if-statement ×1
java ×1
mysql ×1
performance ×1
php ×1
python ×1
report ×1
unit-testing ×1