常用的技巧
几个防止spaghetti code的建议
澄清程序的流程
一种避免 spaghetti code的方法就是让你的代码的逻辑显而易见。例如,你需要一个句柄来完成好多个不同的启动过程,你最好把它拆分成多个句柄,并且每个句柄只负责 一个特定的工作,如果你能使用描述性的名字,你就可以很容易的掌握这个句柄是做什么用的:
on startup
InitMenus
InitWindows
InitPrefs
end startup
解释这些拆分的程序调用所需的额外时间试可以忽略不计的,而且分离这些程序可以使你在跟踪代码的漏洞的时候更方便。
为了让你的代码流程更清晰,你可以先写注释,把你的代码所要完成的工作写成注释,然后再在其中填写要执行的代码,这个技巧对于早期处理复杂的程序单元也非常有用,它可以让你按照步骤的思考来解决问题。
很多词在脚本语言里有缩写的形式,请使用它们,它们节省空间并且从视觉上来说让你的变量名和句柄名更突出,你还可以少打几个字符。
你可以用括号来把逻辑和算法表达式集合在一起,让代码简洁:
if (the vis of wd "myWindow") then
而不是:
if the vis of wd "myWindow" = true
请记住,用 "=" 而不是 "is"来表达比较,这可以让你的比较式看起来更显眼。
有效的注释
作为一般的原则,每一段代码如果其功能不是显而易见的话,都有必要加上注释。例如:
这个就不必要:
-- Set the cursor to watch:
set the cursor to watch
但是这个代码段就有必要写一个简短的说明:
-- Update each card with the current date:
set the cursor to watch
put the short date into tDate
repeat with i = 1 to the number of cds
put tDate into fld "Date" of cd i
end repeat
注释也可以用来作为视觉的引导,来分别不同的代码段落,这里就是一个用注释来视觉分辨相关句柄的例子:
--=============================================--
-- WINDOW ROUTINES --
-- DocWindowRect()--
-- Returns the default size for new document windows--
function DocWindowRect
put the screenrect into r
add 4 to item 1 of r
add 4 to item 2 of r
subtract 4 from item 3 of r
subtract 4 from item 4 of r
return r
end DocWindowRect
-- UpdateAllWindows--
-- Allows each open window to refresh itself--
on UpdateAllWindows put windows() into tWdList
repeat for each line tWd in tWdList
send "UpdateThisWindow" to tWd
end repeat
end UpdateAllWindows
--=================================================--
注意上面的例子还包含了对每个句柄的简单描述,这样就可以让这些句柄在你扫描的时候更容易发现.
你也可以在代码中插入注释,例如下例:
on MyHandler
global gMyGlobal
--
SomeStatementHere
AnotherStatement
--
StatmentForSomethingElse
MoreOfThat
end MyHandler
用注释来分开代码成不同的段落,可以使相关的代码集中在一起,更容易分辨。而在句柄之间加入空白行,你可以快速的掠过你的代码.
如果你不关心脚本的大小限制,你可以自由的使用注释,SuperCard, HyperCars还有其他一些脚本语言环境通常限制脚本大小在32k以内,所以你如果面临这样的问题,就需要考虑只注释重要的部分和那些用来视觉分界的来控制大小。
出处:蓝色理想
责任编辑:蓝色
上一页 翻译:Scripting Style Guide 下一页 常用的技巧-续
◎进入论坛Flash专栏版块参加讨论
|