История изменений
Исправление kaldeon, (текущая версия) :
Намного проще и разумнее разработать правильную иерархию классов, чем потом плутать по композиционной лапше (это тот самый «индусский код»?) при рефакторинге и баг фиксинге.
Ты не можешь заранее разработать правильную иерархию классов по той же причине, по которой ты не можешь заранее разработать правильную иерархию знаний: у тебя ещё нет опыта и знаний, чтобы сделать правильные обобщения и подразделения, если только это не вторая итерация.
В программировании обобщения реализуются с помощью интерфейсов, open-close-read-write. Подразделения зачастую просто просто описываются как «файл блочного устройства», «файл сетевого устройства». Когда для подразделения нужен новый тип, то ты просто вводишь новый тип, элемент наследования вовсе не обязателен.
Код запутывает не использование композиции, а неправильное использование абстракций («пойду на рыбалку ловить животных на маленькую змею»).
Про принцип composition over inheritance ещё можешь читнуть в Design Patterns, но я лично не читал.
Недостатки композиции решаются трейтами, миксинами, встраиванием типов.
А вот это всё новых проблем не порождает?
To my knowledge, нет.
VB.NET поддерживает Exceptions, Default Arguments, Operator Overloading в отличие от Golang
…
Значит, это кому-нибудь нужно? Напоминаю, это одни из самых популярных ЯП в мире.
Я могу понять исключения – это важный строительный блок в других языках и было бы очень удобно, чтобы разработчики легко перенесли свой опыт на новый язык. Но перегрузка операторов в языке, который называется «Бейсик», выглядит как «давайте добавим фичу X, потому что она есть у всех остальных».
Исправление kaldeon, :
Намного проще и разумнее разработать правильную иерархию классов, чем потом плутать по композиционной лапше (это тот самый «индусский код»?) при рефакторинге и баг фиксинге.
Ты не можешь заранее разработать правильную иерархию классов по той же причине, по которой ты не можешь заранее разработать правильную иерархию знаний: у тебя ещё нет опыта и знаний, чтобы сделать правильные обобщения и подразделения.
В программировании обобщения реализуются с помощью интерфейсов, open-close-read-write. Подразделения зачастую просто просто описываются как «файл блочного устройства», «файл сетевого устройства». Когда для подразделения нужен новый тип, то ты просто вводишь новый тип, элемент наследования вовсе не обязателен.
Код запутывает не использование композиции, а неправильное использование абстракций («пойду на рыбалку ловить животных на маленькую змею»).
Про принцип composition over inheritance ещё можешь читнуть в Design Patterns, но я лично не читал.
Недостатки композиции решаются трейтами, миксинами, встраиванием типов.
А вот это всё новых проблем не порождает?
To my knowledge, нет.
VB.NET поддерживает Exceptions, Default Arguments, Operator Overloading в отличие от Golang
…
Значит, это кому-нибудь нужно? Напоминаю, это одни из самых популярных ЯП в мире.
Я могу понять исключения – это важный строительный блок в других языках и было бы очень удобно, чтобы разработчики легко перенесли свой опыт на новый язык. Но перегрузка операторов в языке, который называется «Бейсик», выглядит как «давайте добавим фичу X, потому что она есть у всех остальных».
Исходная версия kaldeon, :
Намного проще и разумнее разработать правильную иерархию классов, чем потом плутать по композиционной лапше (это тот самый «индусский код»?) при рефакторинге и баг фиксинге.
Ты не можешь заранее разработать правильную иерархию классов по той же причине, по которой ты не можешь заранее разработать правильную иерархию знаний: у тебя ещё нет опыта и знаний, чтобы сделать правильные обобщения и подразделения.
В программировании обобщения реализуются с помощью интерфейсов, open-close-read-write. Подразделения зачастую просто просто описываются как «файл блочного устройства», «файл сетевого устройства». Когда для подразделения нужен новый тип, то ты просто вводишь новый тип, элемент наследования вовсе не обязателен.
Код запутывает не использование композиции, а неправильное использование абстракций («пойду на рыбалку ловить животных на маленькую змею»).
Про принцип composition over inheritance ещё можешь читнуть в Design Patterns, но я лично не читал.
Недостатки композиции решаются трейтами, миксинами, встраиванием типов.
А вот это всё новых проблем не порождает?
To my knowledge, нет.
Быть похожим на все остальные. C#, PHP, Java, VB – они все предлагают примерно один и тот же стиль.
Значит, это кому-нибудь нужно? Напоминаю, это одни из самых популярных ЯП в мире.
Я могу понять исключения – это важный строительный блок в других языках и было бы очень удобно, чтобы разработчики легко перенесли свой опыт на новый язык. Но перегрузка операторов в языке, который называется «Бейсик», выглядит как «давайте добавим фичу X, потому что она есть у всех остальных».