Компактная конвенция
В случае, если каждый метод и переменная будут использоваться только один раз, что является более правильным соглашением?
Создание столько переменных, сколько необходимо:
var x = GmailApp.getInboxUnreadCount();
var email = GmailApp.getInboxThreads (0, x);
Составление кода в одну строку:
var email = GmailApp.getInboxThreads (0, GmailApp.getInboxUnreadCount());
2 ответа
Последнее в пределах разумного. Но это в значительной степени вопрос стиля в простых случаях.
Это означает, что если у вас есть вызов функции, который принимает 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. Вам придется проверить оба метода.