Компактная конвенция - PullRequest
3 голосов
/ 20 января 2012

В случае, если каждый метод и переменная будут использоваться только один раз , что является более правильным соглашением?

Создание столько переменных, сколько необходимо:

var x = GmailApp.getInboxUnreadCount();
var email = GmailApp.getInboxThreads (0, x);

Составление кода в одну строку:

var email = GmailApp.getInboxThreads (0, GmailApp.getInboxUnreadCount());

Ответы [ 2 ]

3 голосов
/ 20 января 2012

Последнее, в пределах разумного. Но это в значительной степени вопрос стиля в простых случаях.

Это означает, что если у вас есть вызов функции, который принимает 10 аргументов, и каждый из этих аргументов происходит из самого большого вызова функции, не делайте этого. Подумайте, кто потом получит вашу кодовую базу.

"Эта строка кода читается с использованием меньшего количества локальных переменных? Или мне нужно разбить ее, чтобы лучше проиллюстрировать, что делает эта строка?" это вопрос, который вы должны задать себе. И в этом случае последний полностью читабелен.


На самом деле, я бы сказал, что первый пример менее читабелен из-за бесполезного имени локальной переменной x. Если вместо этого были названы лучше, это может быть более жизнеспособным вариантом.

var unreadCount = GmailApp.getInboxUnreadCount();
var email = GmailApp.getInboxThreads (0, unreadCount);

Это лучше, но все же довольно не нужно в этом очень простом случае.

1 голос
/ 20 января 2012

Это компромисс.

Первый пример легче читать и отлаживать. Он имеет 2 строки, где могут возникнуть ошибки. Для отладки это хорошо, потому что в каждой строке вызывается только одна функция.

Второй пример называется «одним вкладышем», и его сложно отладить, потому что есть несколько вещей, которые могут вызвать ошибки в этой строке, но используют меньше памяти. Вероятно, незначительное количество, хотя.

В этом примере

1. var unread = GmailApp.getInboxUnreadCount();
2. var email = GmailApp.getInboxThreads (0, unread);

Скажем, вы получили ошибку в строке 2. Вы знаете, что getInboxThreads выдает ошибку.

1. var email = GmailApp.getInboxThreads (0, GmailApp.getInboxUnreadCount());

Теперь, скажем, вы получили ошибку в строке 1. Вам нужно проверить оба метода.

...