Jør*_*eit 2 delphi coding-style no-op
在Delphi中编写无操作语句的最佳方法是什么?
拿这个代码:
if a=b then
SomeOldStatement
else
AnotherStatement;
Run Code Online (Sandbox Code Playgroud)
并说你暂时想要退出SomeOldStatement.
你会选择这个解决方案吗?
if a=b then
//SomeOldStatement
else
AnotherStatement;
Run Code Online (Sandbox Code Playgroud)
就个人而言,我不喜欢空白then部分,并希望在那里有一些可编辑的东西 ......
if a=b then
NoOp
//SomeOldStatement
else
AnotherStatement;
Run Code Online (Sandbox Code Playgroud)
lke*_*ler 14
不知道为什么你根本不需要任何东西(例如我对"其他"感到满意).
但如果你想在那里编译一些东西,我会这样做:
if a=b then
begin end
//SomeOldStatement
else
AnotherStatement;
Run Code Online (Sandbox Code Playgroud)
一个空的开始块是我在Delphi中知道的最好的noop.它不会产生汇编代码,因此不会产生任何开销.
小智 12
if a=b then
SomeOldStatement
else
AnotherStatement;
Run Code Online (Sandbox Code Playgroud)
应该写成
if a=b then
begin
SomeOldStatement;
end
else
begin
AnotherStatement;
end;
Run Code Online (Sandbox Code Playgroud)
现在,你可以注释掉SomeOldStatement; 正是你所经历的效果,调试器更准确地遵循代码的流程,你可以避免像代码中的奇怪的副作用
if a=b then
if b=c then
statement1
else
if c=d then
statement2;
else
statement2
else
statement3;
Run Code Online (Sandbox Code Playgroud)
搞砸你的缩进,弄错分号,记录出测试线和神圣的废话,事情变得很难看.
严肃地说,试着弄清楚我刚才写的代码是否有效,没有编译器传递.
现在,猜猜这会发生什么:
if a=b then
if b=c then
statement1
else
if c=d then
statement2;
// else
statement2
else
statement3;
Run Code Online (Sandbox Code Playgroud)
也:
if a=b then
statement1;
statement2;
Run Code Online (Sandbox Code Playgroud)
你经常会做一些奇怪的事情,甚至是陌生的事情
if a=b then
// statement1;
statement2;
Run Code Online (Sandbox Code Playgroud)
严肃 - 只要养成总是在你的所有逻辑中开始结束的习惯 - 它使你的代码更易于遵循,避免副作用,避免心理解析错误,代码解析错误和注释掉副作用.
另外,空的开始/结束与您的无操作相同.
在Delphi 2005及后续版本中,您可以定义一个NoOp空过程并将其标记为inline.
这样,除非您在编译器选项{$INLINE OFF}中将代码内联控件定义或设置为Off,否则不会生成代码.
procedure NoOp; inline;
begin
// do nothing
end;
Run Code Online (Sandbox Code Playgroud)
结果代码非常干净:
if a=b then
NoOp //SomeOldStatement
else
AnotherStatement;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4002 次 |
| 最近记录: |