Одна из тем, которые я всегда поднимаю на собеседовании, — value-based классы. Или value-классы. Ну хотя бы неизменяемые объекты? — зачастую приходится перебрать несколько вариантов, прежде чем собеседник поймет, чего я от него хочу. “А, DTO’шки”. Досадно, что такая важная концепция, как “значение”, имеет такую малую распространенность в мейнстримном программировании. И вот сидел я как-то вечером и тихо грустил о том, что люди не жалуют функциональное программирование. А потом вдруг подумал — а чего грустить, попробую побороться с этим хоть как могу. И пошел писать эту статью.
Continue reading “Значение выражений”Про автоматизированное тестирование
Так получилось, что последний год я чаще писал код с тестами, чем без них. Причем чаще всего я писал тесты вперед кода. Я знаю, что эта тема до сих пор считается спорной в разработке ПО: многим кажется, что это какой-то фанатизм сродни парному программированию и Agile-методологиям, кто-то считает, что конкретно в его области тесты не применимы, а кто-то верит, что с тестами разработка замедляется в два раза и внедрять их можно только когда менеджеры разрешили.
В общем, хочу поговорить обо всех этих заблуждениях, а также поделится опытом, как я сам дошел до жизни такой.
Continue reading “Про автоматизированное тестирование”Клавиатуры и программирование
Не так давно я сменил свой рабочий инструмент. Выбор был очень непростой, долгое время я откладывал этот вопрос, говоря себе, что пока и на “дефолтной” нормально работается. И чтобы вы понимали масштаб раздумий, я пристально приглядывался к ErgoDox EZ. А потом купил обычную такую mxKeys от старого доброго Logitech. О чем ни капли не жалею и буквально каждый день получаю удовольствие от работы с ней. И теперь хочу поделится с вами кое-какими мыслями, которые возникли у меня в процессе выбора и эксплуатации данного девайса, а также некоторыми мыслями о клавиатурах и наборе текста в общем. Так что готовьтесь, сейчас я буду убеждать вас, почему клавиатура вроде mxKeys — отличный выбор для программиста и почему вам не нужен эргономический монстр.
Continue reading “Клавиатуры и программирование”Сверху или снизу?
Ох, давно я ничего не писал! Я пытался, честно. Я начинал писать обширную статью-сравнение Unity и UE4. Я начинал писать цикл статей про некоторые внутренности UI в Unity. К тем статьям я подходил основательно: составлял список тем, на которые потенциально мог бы что-то написать. Выбирал наиболее актуальную. Потом составлял примерный план. И систематически его разворачивал — ну все как положено! А в итоге все ушло в мусор. Как-то не вышел каменный цветочек.
А на днях меня посетила спонтанная идея: к чему должно быть ближе имя метода — к вызывающему коду или к вызываемому? Возможно, у вас это не вызывает никаких вопросов, вы знаете верный ответ. И, черт возьми, немалые шансы, что вы угадали! Но все же, давайте немного поразмышляем об этом. Я, честно, не уверен, что мы к чему-то придем, и что эта статья не повторит историю своих предшественниц. Но попробовать хочется.
Про форматирование
Когда я был совсем маленьким, я писал код на BASIC. Я бормотал себе под нос заклинания “иф икс больше нуля тхен дыщ-дыщ-дыщ”. Дыщ-дыщ-дыщ — это три пробела. Да, я вбивал их вручную. Да, видимо тогда мне еще не довелось узнать о том, что есть способ проще. И что then читается немного не так. Но зато уже тогда я знал, что содержимое условий и циклов нужно сдвигать! Так делают профи.
С тех пор мой стиль оформления кода успел претерпеть некоторые изменения. Об истории этих самых изменений я и хочу сегодня рассказать.
Делаем прототип клиент-серверной стратегии на Unity
Недавно я делал тестовое задание в одну некогда известную в нашей стране игровую компанию. Честно говоря, я по-началу был несколько ошарашен дерзостью — ни много ни мало, нужно было всего лишь сделать “прототип клиент-серверной стратегии”. Тянет на несколько дней плотной работы! Но я все же решил ввязаться в это. Ну, мне ведь не слабо, да?
Continue reading “Делаем прототип клиент-серверной стратегии на Unity”
Не обижайте чужие технологии!
Суровый C++-ник скептически относится к пробело-чувствительности Python и считает ее бездонным источником ошибок? А как вам мнение, что ФП — хайповая тема и на самом деле все то же самое можно отлично сделать на ООП? Знакомо такое отношение? Надеюсь, что нет. Впрочем, скорее всего за свою карьеру вам доводилось сталкиваться с подобным. Об этом и хочу поговорить.
Волшебство Clojure
Когда-то в детстве мне посчастливилось увидеть в одной детской энциклопедии картинку. Справа был небольшой фрагмент кода на бейсике. На таком старом классическом бейсике, с нумерацией строк через десять, вроде 640, 650, 660. А слева был монитор, на котором отображалась монохромная картинка то ли взлетной полосы, то ли самолета, то ли самолета, взлетающего со взлетной полосы… и подписано, что, мол, программка справа рисует картинку слева.
Про инкрементальную архитектуру
Возможно, более употребимым термином является эволюционная архитектура (evolutionary architecture / design), но я впервые познакомился с этим понятием именно под таким названием, так что буду использовать его1. В этой статье я собираюсь рассказать о своем понимании этого предмета и еще немного о том, как я к этому пониманию шел.
Поддержка TextMesh Pro в Soft Mask
TextMesh Pro — очень популярный ассет для рендеринга SDF-шрифтов. Не так давно он стал доступен бесплатно, что для меня послужило поводом наконец-то сделать штатную интеграцию этого пакета с моим Soft Mask.