(我将在这里使用“A”代替注释,“'”代替符号符号。)
嗯,我开发 APL 一年了,我只用过Aplusdev.org。
你甚至不需要更多。诀窍是尝试像 OOP 一样思考。你应该有——如果我没记错的话——用作类数据的结构化字段,比如 {'attribute1 'attribute2, {value,value2}},这样你就可以像 @987654322 一样轻松挑选它们@ 在 C++ 中。
(这里是'属性Pick对象,只在类函数中使用:))
此外,使用命名空间函数:
namespace_classname.method(this, arg1)
namespace_classname._private_method(this, arg1, arg2)
还有很多简单的工具功能,而不是漂亮的长行。性能下降并不显着,您可以稍后在看到某些可能更快的情况下针对 say 数组进行优化。
在任何事情之前:想想 matlab 和 mathematica 没有 for 循环! :) 很有帮助。
我对健壮、可维护代码的建议:
使用广泛的实用函数集,而不是使用那些不可读的符号进行欺骗,以使您的代码始终切中要害。
-
try-catch 块有一个内置的异常处理,可以在这里使用,
try_begin();
一个尝试过的代码,可能在额外的括号中不要忘记最后的 try_end()。
try_end();
catch(sth, function_here);
可以很好地实现。 (你会看到,捕捉错误非常重要)
-
粗略的类型检查:实现一个标准并用于不那么多次调用的函数...(您可以在函数定义之后放置一个具有灵活参数的函数)
语法:
函数(point2i,ch):
{
类型检查({{'int,[1 2]},'char});在类型检查中做一些断言...
// 你的函数放在这里
}
lambda 函数可以很有效,你可以做一些反射来实现 lambdas。
总是用“return”声明退货!
基于 try-catch 的单元测试测试您编写的每个函数。
我还使用了很多来自 mathematica 的“apply”和“map”,实现了我自己的版本,它们在这里非常非常有效。
-
我写 matlab 的想法是因为你可以在这里有一个变量中的结构化字段(=类数据)列表。如果你想保持 for-loop-less(你想,相信我),你会写很多这样的东西。为此,您需要有一个标准的命名约定,比如用复数表示:
namespace_class.method(objects, arg1, arg2)
最后:另外,我编写了像 Javascript 或 VisualBasic 中的 inputBox 和 messageBox,它们可以很容易地组合简单的工具或检查状态。 messageBox 的唯一问题是它不能暂停功能流,
所以你需要
AA documentation of f1
f1():
{
A do sth
msgbox.call("Hi there",{'Ok, {'f2}});
}
f2():
{
A continue doing stuff
}
您可以在 bash 中使用 gawk/sed 组合编写自动文档,以将其放入网页中。
创建 HTML 格式的代码也有助于打印。 ;)
我希望这是一个很好的大纲,可以正确构建。在编写自己的工具之前,请尝试从遗留代码库中挖掘可用的工具......由于当时的混乱,函数通常甚至用不同的名称实现了 4 次。