Еще раз о принципе подстановки Лисков, или семантика наследования в ООП

Наследование — один из столпов ООП. Наследование используется для того, чтобы переиспользовать общий код. Но не всегда общий код надо переиспользовать, и не всегда наследование — самый лучший способ для переиспользования кода. Часто получается, так, чт…

[Из песочницы] Использование let объявлений переменных и особенности образуемых при этом замыканий в JavaScript

Написать данную заметку меня сподвигло прочтение статьи на Хабре «Var, let или const? Проблемы областей видимости переменных и ES6» и комментариев к ней, а также соответствующей части книги Закаса Н. «Understanding of ECMAScript 6». Исходя из прочитанн…

[Перевод] Типизируйте уже наконец свой код

Привет хабр!
На днях мне в очередной раз на глаза попал код вида
if(someParameter.Volatilities.IsEmpty())
{
// We have to report about the broken channels, however we could not differ it from just not started cold system.
// Therefore write …

Не морочьте мне голову со своим функциональным программированием

Адепты функционального программирования любят завлекать новичков обещаниями идеальной выразительности кода, 100% корректностью, лёгкостью поддержки и простотой рефакторинга, а иногда даже пророчат высочайшую производительность. Однако, опытные разработ…

[Перевод] Улучшенные четыре правила проектирования ПО

Привет, Хабр! Представляю вашему вниманию статью “Four Better Rules for Software Design” автора David Bryant Copeland. David Bryant Copeland — архитектор ПО и технический директор Stitch Fix. Он ведет свой блог и является автором нескольких книг.
Март…

[Перевод] Опасности конструкторов

Привет, Хабр! Представляю вашему вниманию перевод статьи “Perils of Constructors” автора Aleksey Kladov.
Один из моих любимых постов из блогов о Rust — Things Rust Shipped Without авторства Graydon Hoare. Для меня отсутствие в языке любой фичи, способ…