из нелогичного можно вспомнить equals из джавы или switch case где обязательно надо ставить break
Ну, тут вы загнули, конечно. Метод equals() нужен потому, что объекты нужно как-то сравнивать, а механизма перегрузки операторов в джаве не было отродясь. Если бы вы сказали про отсутствие этой перегрузки, я бы с вами согласился, а так – хороший инструмент в рамках правил самого языка(напоминаю, что оператор сравнения сравнивает объекты на эквивалентность, то бишь сравнивает хеши, а метод equals() сравнивает объекты так, как нужно вам).
Но вот насчет switch case и break я с вами соглашусь... но дело в том, что во многих сиподобных языках дело обстоит точно так же. Во всяком случае, в плюсах и си все идентично. Но даже так, в джаве есть альтернатива – вы можете вызвать лямбду в кейсе, и все будет работать. Если вы не поняли, о чем я, вот пример:
switch (param) { //стандартный вариант писать кейсы
case value:
//some code;
break;
}
switch (param) { //вариант через лямбды
case value -> {
//some code;
}
}
Вот о чем я говорю. Хотя, я могу согласиться, что это неочевидно и требует знаний некоторых тонкостей языка, но я считаю, что это, внезапно, проблема не языка.
Это проблема учителей этого языка и программистов. Если они сразу начнут учить писать код по-новому, безопасно, а не пихая в голову нормы устаревшего си, то сюрприз, багов будет меньше, а код станет безопаснее.
Ну, тут вы загнули, конечно. Метод equals() нужен потому, что объекты нужно как-то сравнивать, а механизма перегрузки операторов в джаве не было отродясь. Если бы вы сказали про отсутствие этой перегрузки, я бы с вами согласился, а так – хороший инструмент в рамках правил самого языка(напоминаю, что оператор сравнения сравнивает объекты на эквивалентность, то бишь сравнивает хеши, а метод equals() сравнивает объекты так, как нужно вам).
Но вот насчет switch case и break я с вами соглашусь... но дело в том, что во многих сиподобных языках дело обстоит точно так же. Во всяком случае, в плюсах и си все идентично. Но даже так, в джаве есть альтернатива – вы можете вызвать лямбду в кейсе, и все будет работать. Если вы не поняли, о чем я, вот пример:
Вот о чем я говорю. Хотя, я могу согласиться, что это неочевидно и требует знаний некоторых тонкостей языка, но я считаю, что это, внезапно, проблема не языка.
Это проблема учителей этого языка и программистов. Если они сразу начнут учить писать код по-новому, безопасно, а не пихая в голову нормы устаревшего си, то сюрприз, багов будет меньше, а код станет безопаснее.