Блог

Что лучше - virtual или final по умолчанию

Такие языки как Java (как я понял Ruby on Rails тоже сюда относится) делают все методы по умолчанию виртуальными. Это значит, что любой наследник может переопределить любой метод, если явно не написано ключевое слово final. В C# наоборот, все методы по умолчанию final и если ты хочешь переопределение, то должен явно указать у предка слово virtual. 

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

В данном случае я сторонник подхода Microsoft и считаю его правильным. Закрывать все по умолчанию соответствует банальным требованиям безопасности - должно быть запрещено все, что явно не разрешено. Открытость Java - это хорошо, но открытость и безопасность - разные вещи. 

Swift в режиме REPL

У нового языка Swift появилась возможность исполнять команды в режиме REPL. Достаточно запустить командную строку и выполнить команду swift, как появляется специализированная командная строка, в которой можно писать код Swift. Стоит только ввести строку кода, нажать Enter, и тут же можно увидеть результат работы строки.

Response Cookie автоматически создает плюшки

У меня в одном из мест в коде может быть создана плюшка. Если плюшка существует, то запросы должны перенаправляться на определенную страницу. При этом код создания плюшки находится в одном месте, а проверки в другом. 

Так вот, один программист написал код, который добавляет новую Cookie в Response.Cookie, а в другом месте проверяет, если Response.Cookie существует, то читает значение и перенаправляет пользователя. 

И тут начинается немного конфузия в коде. Дело в том, что если Response.Cookie["Здесь имя"] не существует, то она будет создана автоматически с пустым значением. Если честно, не понял, зачем это сделано, но это значит, что лучше не трогать таким образом объект, иначе он создаст лишних плюшек. 

MVC упрощает редизайны?

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

Кстати, простота смены дизайна очень часто зависит не от Backend программиста, а от WEB программиста, который пишет HTML и JavaScript. 

Этот сайт у меня построен без каких либо MVC и он даже не использует прелести объектного программирования. Просто когда я его создавал, я думал, что это будет только блог, это потом уже появился раздел книг, статей и остальные страницы. Я уже несколько раз делал редизайн и для смены дизайна при наличии готового HTML мне каждый раз нужно было не более двух часов. 

Забыл изменить номер версии

У меня это вечная проблема - я не меняю номер версии в своих программах. Я просто не слежу за ними. Вот только что вышла очередная версия моей игрушки Connecticus и в окне About до сих пор светится 1.0, хотя реально это уже третий выход программы. В AppStore последняя версия опубликована как 1.2. 

Нужно будет подправить программу и читать номер версии из мета данных сборки. Apple требует обновлять номер и не позволяет загружать разные сборки под одним и тем же номером, так что в мета данных мне приходиться увеличивать номер, заодно это будет автоматически отображаться и в окне About. 

А ты следишь за номерами версий и сборок?

Андроид приложения на Хромиуме

Google хочет, чтобы программисты разрабатывали более универсальные приложения для Андроида, которые будут работать и на Хромбуке. Ну на сколько я знаю, под андроид далеко не все приложения для смартфона хорошо работают на планшетах, так что делать что-то сразу для трех платформ будет явно не из легких задач. 

Но тут я хотел бы отметить то, что Хромбук должен будет иметь тот де самый API, что и Андроид. У обеих ОС одни корни, но всё же разные команды (на сколько я слышал). А раз так, то будет иметь смысл объединить разработчиков и создавать что-то универсальное, как это делает Microsoft.

Apple меняет язык Swift без сохранения совместимости

Вышло очередне обновление XCode и Apple в очередной раз сделала улучшения в язык Swift. При этом разработчики явно не заморачиваются с сохранение обратной совместимости и в очередной раз затравили программистов обновлять свой код. 

Я не знаю как Google поступает со своими SDK, а Microsoft в основном сохраняет совместимость на долгое время, делая жизнь программистов проще. 

Не смотря на то, что меня не очень сильно обрадовала необходимость обновить свой код, я всё же предпочитаю подход Apple. Если разработички нашли более хорошее решение, то лучше обновить один раз и не оставлять мусор ради сохранения совместимости.

Дизайн приложения в XCode 6

У нас на работе три года назад почти половину программистов направили на курсы обучения программирования под iOS. У меня тогде только появился мой Mac. После этого я ни разу не смотрел видео по программированию и не брал никаких курсов, базовых знаний было достаточно для того, чтобы создавать приложения и изучать XCode методом научного тыка. 

С выходом XCode 6 мне пришлось обратиться к youtube урокам, потому что новые возможности по созданию интерфейса в редакторе оказались далеко не интуитивными. Я далеко не во все въехал с первого захода. 

Phoenix будет открытым языком Swift

Группа разработчиков, которая известна как Ind.ie, объявила о намерении создать открытый компилятор для языка Swift. Их не устраивает то, что Apple сделала Swift закрытым и считают, что компания таким образом хочет сделать приложения менее портируемыми и привязать разработчиков к своей эко системе.

Ну во-первых, раньше для разработки под iOS основным языком был Objective-C и сейчас его так же можно использовать, и этот язык так же не был переносимым на Андроид. Cocoa сама по себе достаточно уникальна. И я не помню, чтобы кого-то это возмущало. 

Как удалось выучить необходимый объем математики для программиста?

Давно не было писем читателей на блоге:

Привет, Михаил! Есть один вопрос, буду рад если ответишь. Как тебе удалось выучить необходимый объем математики для программиста, дискретку, графы, деревья, алгоритмы и прочий матан? Складывается ощущение, что выучить такой объем по книгам просто невозможно. С другой стороны я пришел к выводу, что без этих знаний профессионалом мне не стать.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне