Понравились переведённые Андреем Шмигом главы из книги Михаэля Привата и Роберта Варнера "Pro Core Data for iOS"
воскресенье, 22 ноября 2015 г.
пятница, 20 ноября 2015 г.
Плоха ли привычка выходить с помощью return из метода/функции? И про ==
Вспомнил недавно, что читал у одного известного автора (простите, не помню как его зовут), что выходить из функции/метода при наступлении какого-нибудь условия с помощью return - не самая полезная привычка.
Он объяснял это тем, что однажды код метода/функции будет модифицироваться, и тот кто будет спустя месяцы или годы добавлять что-то новое в логику, он может не придать должного внимания преждевременному возврату из функции/метода при определённом условии. Если меняется логика, то потенциально может потребоваться уточнение условий преждевременного выхода из тела метода/функции.
Автор советовал вместо того чтобы просто выходить при определённых условиях с помощью return не делать этого, а везде явно заключить всё в блоки, потому что это будет в будущем явно показывать: при таких-то условиях выполняется вот этот блок, а при таких-то условиях будет выполняться другой блок. Нигде не будет ни одного return на полпути, а только в конце метода/функции мы уже явно выдаём результат или просто выходим восвояси.
Интересно, что думают другие на этот счёт?
И ещё вспомнил один позабытый совет, который сейчас стал использовать. Автор одной книги делать не так, как принято у многих:
if (variable == CONSTANTA)
{
// bla bla bla
}
а делать так:
if (CONSTANTA == variable)
{
// bla bla bla
}
Потому что если по запарке напишешь не ==, а = (9 999 раз напишешь правильно, а в 10 000 раз всё-таки ошибёшься, потому что ты обычный человек, а ошибёшься в важном месте, и люди понесут серьёзные убытки из-за банальной человеческой невнимательности), то константа просто не позволит тебе сделать это физически.
Он объяснял это тем, что однажды код метода/функции будет модифицироваться, и тот кто будет спустя месяцы или годы добавлять что-то новое в логику, он может не придать должного внимания преждевременному возврату из функции/метода при определённом условии. Если меняется логика, то потенциально может потребоваться уточнение условий преждевременного выхода из тела метода/функции.
Автор советовал вместо того чтобы просто выходить при определённых условиях с помощью return не делать этого, а везде явно заключить всё в блоки, потому что это будет в будущем явно показывать: при таких-то условиях выполняется вот этот блок, а при таких-то условиях будет выполняться другой блок. Нигде не будет ни одного return на полпути, а только в конце метода/функции мы уже явно выдаём результат или просто выходим восвояси.
Интересно, что думают другие на этот счёт?
И ещё вспомнил один позабытый совет, который сейчас стал использовать. Автор одной книги делать не так, как принято у многих:
if (variable == CONSTANTA)
{
// bla bla bla
}
а делать так:
if (CONSTANTA == variable)
{
// bla bla bla
}
Потому что если по запарке напишешь не ==, а = (9 999 раз напишешь правильно, а в 10 000 раз всё-таки ошибёшься, потому что ты обычный человек, а ошибёшься в важном месте, и люди понесут серьёзные убытки из-за банальной человеческой невнимательности), то константа просто не позволит тебе сделать это физически.
четверг, 19 ноября 2015 г.
Чем мне понравился язык программирования Swift
Попробовал писать на Swift. В целом язык больше нравится, чем не нравится.
Немного ломает то, что строчки не нужно заканчивать точкой с запятой. Немного ломает то, что после if необязательно писать скобки. Впрочем я их пишу, чтобы не отвыкать от своих привычек к C++ и Objective-C.
Очень радует, что язык Swift заставляет более внимательно относиться к типам данных. То есть программист вынужден обращать внимание на совместимость типов данных что по моему представлению хотя бы немного увеличивает надёжность написанного кода.
Ещё одна интересная особенность: nil не указывает на несуществующую область памяти (как в C++ или Objective-C), он говорит о том, что переменная равна ничему. Удивило, что даже переменной типа Int? можно присвоить nil, и что самое приятное лично для меня - эта переменная не будет равна целочисленному нулю! Это очень классно, я считаю, что это уменьшает вероятность логических ошибок в коде.
Немного ломает то, что строчки не нужно заканчивать точкой с запятой. Немного ломает то, что после if необязательно писать скобки. Впрочем я их пишу, чтобы не отвыкать от своих привычек к C++ и Objective-C.
Очень радует, что язык Swift заставляет более внимательно относиться к типам данных. То есть программист вынужден обращать внимание на совместимость типов данных что по моему представлению хотя бы немного увеличивает надёжность написанного кода.
Ещё одна интересная особенность: nil не указывает на несуществующую область памяти (как в C++ или Objective-C), он говорит о том, что переменная равна ничему. Удивило, что даже переменной типа Int? можно присвоить nil, и что самое приятное лично для меня - эта переменная не будет равна целочисленному нулю! Это очень классно, я считаю, что это уменьшает вероятность логических ошибок в коде.
Подписаться на:
Сообщения (Atom)