Чистый код как культура программирования

Поднятая недавно тема парадокса «разбитых окон» привела к рождению данного поста. Как говорится, «чисто не там, где убирают, а там, где не сорят«. О важности чистого кода написана Робертом Мартином (Uncle Bob) замечательная книга Clean Code, которую я очень рекомендую почитать, а также посмотреть его видео-лекции на тему чистого кода: умно, кратко, понятно, по делу и с юмором.

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

Читать далее

Реклама

Все дистрибутивы Java на одной странице

Хорошие люди собрались и сделали полезную страницу со ссылками на все известные дистрибутивы Java. Теперь любой разработчик легко может пройти по ссылкам и скачать любую JVM, чтобы пощупать, померять, сравнить.

Low-latency оптимизации JVM

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

Не существует волшебных параметров, которые делают в момент ваше приложение быстрее, секретных параметров, которые подходят для всех приложений и ситуаций. Каждый выбранный параметр и измененное значение в нем следует проверять на специальной тестовой платформе. По нескольку раз. По нескольку часов. А потом долго думать, почему результаты тестов показывают снижение или улучшение производительности.

Каждая новая версия Java приносит новые параметры и удаляет другие. Каждая новая версия или билд Java может влиять на производительность в лучшую или худшую сторону. Так что при каждом обновлении версии все замеры производительности надо производить заново.

Все приведенное ниже не гарантирует, что в конкретно в вашей ситуации ваше приложение будет работать быстрее. Параметры приведены для Java 8 HotSpot JVM.

Читать далее

О «железе»

При настройке производительности торговой системы для достижения минимальных задержек приходится обращать внимание на все уровни системы, от программного до аппаратного. Желательно ознакомиться с железной частью компьютера, чтобы понимать, как и что работает в процессоре, в памяти и в сети. Так будет легче понять, почему именно эти настройки нужны в данном случае и вредны — в другом. С пониманием аппаратного слоя системы вы становитесь лучше как программист.

Читать далее

Достижение 4-ого уровня с помощью подогрева

Как видно из предыдущих статей JIT-компилятор на 4-ом уровне способен создавать высокопроизводительный нативный код. В некоторых случаях, благодаря сбору статистки в реальном рабочем окружении, нативный код получается даже лучше, чем код созданный статическим компилятором из исходников C/C++. Именно поэтому Java-программисты заявляют, что Java-приложение по скорости может превзойти приложение, написанное на C/C++.

Как же нам достичь этого уровня компиляции, если для его достижения требуется 15.000 исполнений?

Читать далее

О разбитых окнах и культуре производства

К теме чистого кода, культуре производства программного обеспечения, навыков работы в команде: заметка Руслана Черемина. И наше с ним обсуждение. 

JIT-компилятор и как он нам поможет победить latency

JIT-компилятор — встроенный в JVM компилятор байткода в машинный код. Проведя множество интервью с кандидатами на роль Core Java Developer, я был удивлен тем, что многие кандидаты даже не подозревали о существовании такой технологии в JVM, а те, кто краем уха что-то слышал, не могли объяснить, как она работает. Может быть для написания J2EE или веб-приложений этих знаний и не требуется, но для работы в области low-latency trading эти знания — ключевые.

Описание JIT-компилятора хорошо дано в книгах:

В данной статье я просто изложу основы, без знания которых непонятны будут другие статьи по low-latency оптимизации JVM.

Читать далее

Low-latency оптимизации на всех уровнях торговой системы

В предыдущей статье я говорил об оптимизации вообще, а теперь приведу несколько советов по low-latency оптимизациях в Java-приложениях.

Читать далее

6 книг о том, как стать хорошим программистом и им оставаться

Из книги Стива Макконнелла Совершенный код:

Ваш работодатель не может заставить вас стать хорошим программистом; в многих ситуациях он даже не может оценить, насколько хороши вы как программист. Если вы хотите стать отличным программистом, вы отвечаете за это сами. Это зависит от вашего характера.

Что отличает профессионала от халтурщика? Профессионал не останавливается в самосовершенствовании. Он понимает, что всегда есть чему поучиться новому, что он пишет пусть и хороший код, но не лучший. Лишь полный профан или посредственность считает себя Самым Лучшим Программистом на свете, Которому уже Не надо Учиться.

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

Читать далее