我不喜欢看的编码习惯(Bahl翻译)(0分)

  • 主题发起人 主题发起人 Bahl
  • 开始时间 开始时间
B

Bahl

Unregistered / Unconfirmed
GUEST, unregistred user!
1.用常量来测试布尔类型的变量。
没人会指望这样写(如果你这样写了,快醒醒吧,它简直是一场恶梦!)
if ((x > y) = TRUE)
为什么不这样写呢?
if b = TRUE
2.用IF语句来为变量赋不同的布尔值。
为什么要这样写呢?
if (x > y)
then
result := True
else
result := False;
这样写既简便又清楚
result := (x > y);
3.为什么要这样写呢?(尽管在VCL中这种写法到处都有)
procedure foo;
begin

if condition1 then
exit;
if condition2 then
exit;
. . .
end;

这样写更简便更清楚
procedure foo;
begin

if not (condition1 or condition2)
then
begin

. . .
end
end;


4.为什么使用一个FOR循环来搜索数组呢?
result := false;
for i := 0 to (elementCount - 1) do

begin

if anArray = searchFor
then
begin

result := true;
break;
end;

end;

难道下面的代码不更高效,不更清楚吗?
i := elementCount;
repeat
dec (i);
until (i < 0) or (anArray = searchFor);
result := (i >= 0);
下面的代码也不赖
i := elementCount - 1;
while (i >= 0) and (anArray <> searchFor) do

dec (i);
result := (i >= 0);
 
看过这篇文章的富翁请将它提前。
 
1.用常量来测试布尔类型的变量。
没人会指望这样写(如果你这样写了,快醒醒吧,它简直是一场恶梦!)
if ((x > y) = TRUE)
为什么不这样写呢?
if b = TRUE
你这样写与你举的第一个例子有什么区别?
如果B是布尔型的,为什么不这样写呢:
if b then

其实你是希望代码写的简洁一些,这没有坏处,还要看个人的习惯。
 
在葵花宝典中也有说的呀。
不过确实这些是好风格。
 
1.用常量来测试布尔类型的变量。
没人会指望这样写(如果你这样写了,快醒醒吧,它简直是一场恶梦!)
if ((x > y) = TRUE)
为什么不这样写呢?
if b = TRUE
hehe,应该是 if x>y then
吧?
 
3.偶不想这样
procedure foo
begin
if con1 then
if con2 then
if con3 then
if con4 then
if con5 then
if con6 then
if con7 then
if con8 then
if con9 then
.....
end
end
end
好累!
 
我最不喜欢的编码规则是:
1、大小写随意混用或全是小写;
2、在源代码中充斥着大量不规则的缩近;
3、把大量的运行或比较写在一行代码中;有在UNIX下编程经历的人就知道一行代码超过
80个字符就将是一件很糟的事。
至于这种情形,我与贴主有不同的看法,
procedure foo;
begin

if condition1 then
exit;
if condition2 then
exit;
. . .
end;

这样可以避免大量的判断语言嵌套,而且condition1和condition2以及更多的conditions通
常是一个函数调用的结果,会是较长的一串代码,统一放在一个if (not condition1 or ...)
里面也不好,除非这些conditions都被赋到了一个变量中。
这样做还可以减少在代码行缩进时需要打的空格数,当一个函数的代码行数较长时,它将使
你的程序比较易于编辑修改。
 
大家有没有看过“Delphi代码编写规范”一文?
除了写出来的代码有层次感,宜读,
最重要的还是性能--这个你要熟悉delphi object pascal compiler 辣
 
同意Sachow的。
原因是我就喜欢这样写
:)
自己感觉容易看明白。
 
我喜欢如下的规则:
if x>y then
begin
...
end;

procedure ado;
begin
case f do
0:
...
1:
...
end;
end;
 
我曾阅读过,改编过一个上万行编码的程序:
1.程序中基本全是小写,偶尔会出现全是大写的变量
2.用到多线程,竟然声明 constructor create1(),然后在实现时来个inherited Create(true)
3.有几个通用函数和过程,在几个.pas文件中,然而却没有声明成单元文件,在其他单元引用时就来个{$I xxx.pas}
4.常常不管程序的begin
..end,所有行统统对齐
还有很多,再写我快吐血了
 
呵呵,我的程序也全是小写,系统提示生成的有大写,下面是我的编码习惯,各位喜欢吗?
if case1 then
begin
writeln('hello?');
writeln('haha');
end
else
begin
writeln('ok');
end;

......
case casename of
1,2,3,4:
begin
......
end;
5,6,7,8:
begin
.......
end;
end;

repeat
showmessage('hello?');
inc(i);
until i>=10;
while i<=10 do
begin
showmessage('haha');
end;
有时候,首行缩进2个空格,有时候空3个,我是喜欢空3个的,但代码整块移动时容易搞
乱。
 
Kang, .用到多线程,竟然声明 constructor create1(),然后在实现时来个inherited
Create(true)
难道有什么为题?重载create过程不行?重载函数中存在inherited Create(true)有问题?
请指教
 
Feizi
不是不行,我是写的时候没写全
他搞个Create1(),但实现时只有个inherited Create(true),这也有必要重载?还要换个名字 ·##¥%¥##¥
 
和nulk有同感,我也认为第3点没问题。
另外,我觉得第4点采用For的风格也很好啊,没什么不妥。
至于大小写应尽量采用系统默认的关键字大小写,以及自定义变量大小写全文统一,这个GExperts可以帮你。
 
Kang:
针对TThread 他搞个Create1(),但实现时只有个inherited Create(true),
这可能有必要重载,可能他想封装线程的创建而且作为基类派生下去。这个要
看实际应用才能说其中价值如何。
对于改名,这个就要看他应用。
 
在遵循一定标准的情况下,个人都有自己的风格。
 

Similar threads

I
回复
0
查看
833
import
I
I
回复
0
查看
703
import
I
I
回复
0
查看
887
import
I
后退
顶部