如果每个方法和变量只能使用一次,哪种约定更正确?
根据需要创建尽可能多的变量:
var x = GmailApp.getInboxUnreadCount();
var email = GmailApp.getInboxThreads (0, x);
在一行中编写代码:
var email = GmailApp.getInboxThreads (0, GmailApp.getInboxUnreadCount());
如果每个方法和变量只能使用一次,哪种约定更正确?
根据需要创建尽可能多的变量:
var x = GmailApp.getInboxUnreadCount();
var email = GmailApp.getInboxThreads (0, x);
在一行中编写代码:
var email = GmailApp.getInboxThreads (0, GmailApp.getInboxUnreadCount());
后者,在情理之中。但这主要是简单案例中的风格问题。
这意味着如果您有一个带有 10 个参数的函数调用,并且每个参数都来自一个大型函数调用本身,请不要这样做。想想之后谁会得到你的代码库。
“这行代码使用较少的局部变量是否可读?还是我需要将其分解以更好地说明该行在做什么?” 是你应该问自己的问题。在这种情况下,后者是完全可读的。
事实上,我认为第一个示例由于无用的局部变量名称而不太可读x
。如果取而代之的是更好地命名,它可能是一个更可行的选择。
var unreadCount = GmailApp.getInboxUnreadCount();
var email = GmailApp.getInboxThreads (0, unreadCount);
这更好,但在这个非常简单的情况下仍然非常不必要。
这是一个权衡。
第一个示例更易于阅读和调试。它有 2 行可能发生错误。对于调试来说,这很好,因为每行只调用一个函数。
第二个示例称为“单行”,调试起来可能很棘手,因为有多种因素可能导致该行出现错误,但使用的内存较少。不过可能数额不大。
在这个例子中,
1. var unread = GmailApp.getInboxUnreadCount();
2. var email = GmailApp.getInboxThreads (0, unread);
假设您在第 2 行遇到错误。您知道 getInboxThreads 正在引发错误。
1. var email = GmailApp.getInboxThreads (0, GmailApp.getInboxUnreadCount());
现在假设您在第 1 行遇到错误。您必须检查这两种方法。