Сообщение Re: Как оценить простоту кода? от 10.06.2020 8:11
Изменено 10.06.2020 8:11 vsb
Re: Как оценить простоту кода?
Я считаю, что простой код это такой, который может читать с достаточно большой скоростью человек, не очень хорошо знающий целевой язык. Некий джуниор, скажем так, который потратил условный месяц на изучение языка, основные конструкции выучил, а экзотические — нет.
Ещё надо разливать понятия "проще писать" и "проще читать". Код может быть просто написать, но потом прочитать его может быть сложно (в том числе автору после того, как контекст из мозгов выпал через некоторое время). В этом плане на Scala может быть проще писать, но вот читать — не факт. Хотя определённый код вроде манипуляции деревьев, там, где хорошо заходит паттерн-матчинг, действительно может получиться компактней и проще на Scala.
Что касается функциональщины, то определённый код действительно проще выглядит в функциональном стиле. В первую очередь это обработка коллекций, причём такая, которая выглядит как последовательность простых функциональных вызовов вроде filter, map и т.д. Монады я на Java пока не видел, слава богу.
А ещё бывает ситуация, когда код вроде как становится проще для чтения. Например когда переделывают из коллбек-хелла в async-стиль, например на JavaScript. Но по факту та же конструкция async, хоть и выглядит простой, но несёт в себе нетривиальную реализацию и желательно это осознавать. В коллбек-хелле хотя бы всё явным образом видно.
Ещё надо разливать понятия "проще писать" и "проще читать". Код может быть просто написать, но потом прочитать его может быть сложно (в том числе автору после того, как контекст из мозгов выпал через некоторое время). В этом плане на Scala может быть проще писать, но вот читать — не факт. Хотя определённый код вроде манипуляции деревьев, там, где хорошо заходит паттерн-матчинг, действительно может получиться компактней и проще на Scala.
Что касается функциональщины, то определённый код действительно проще выглядит в функциональном стиле. В первую очередь это обработка коллекций, причём такая, которая выглядит как последовательность простых функциональных вызовов вроде filter, map и т.д. Монады я на Java пока не видел, слава богу.
А ещё бывает ситуация, когда код вроде как становится проще для чтения. Например когда переделывают из коллбек-хелла в async-стиль, например на JavaScript. Но по факту та же конструкция async, хоть и выглядит простой, но несёт в себе нетривиальную реализацию и желательно это осознавать. В коллбек-хелле хотя бы всё явным образом видно.
Re: Как оценить простоту кода?
Я считаю, что простой код это такой, который может читать с достаточно большой скоростью человек, не очень хорошо знающий целевой язык. Некий джуниор, скажем так, который потратил условный месяц на изучение языка, основные конструкции выучил, а экзотические — нет.
Ещё надо различать понятия "проще писать" и "проще читать". Код может быть просто написать, но потом прочитать его может быть сложно (в том числе автору после того, как контекст из мозгов выпал через некоторое время). В этом плане на Scala может быть проще писать, но вот читать — не факт. Хотя определённый код вроде манипуляции деревьев, там, где хорошо заходит паттерн-матчинг, действительно может получиться компактней и проще на Scala.
Что касается функциональщины, то определённый код действительно проще выглядит в функциональном стиле. В первую очередь это обработка коллекций, причём такая, которая выглядит как последовательность простых функциональных вызовов вроде filter, map и т.д. Монады я на Java пока не видел, слава богу.
А ещё бывает ситуация, когда код вроде как становится проще для чтения. Например когда переделывают из коллбек-хелла в async-стиль, например на JavaScript. Но по факту та же конструкция async, хоть и выглядит простой, но несёт в себе нетривиальную реализацию и желательно это осознавать. В коллбек-хелле хотя бы всё явным образом видно.
Ещё надо различать понятия "проще писать" и "проще читать". Код может быть просто написать, но потом прочитать его может быть сложно (в том числе автору после того, как контекст из мозгов выпал через некоторое время). В этом плане на Scala может быть проще писать, но вот читать — не факт. Хотя определённый код вроде манипуляции деревьев, там, где хорошо заходит паттерн-матчинг, действительно может получиться компактней и проще на Scala.
Что касается функциональщины, то определённый код действительно проще выглядит в функциональном стиле. В первую очередь это обработка коллекций, причём такая, которая выглядит как последовательность простых функциональных вызовов вроде filter, map и т.д. Монады я на Java пока не видел, слава богу.
А ещё бывает ситуация, когда код вроде как становится проще для чтения. Например когда переделывают из коллбек-хелла в async-стиль, например на JavaScript. Но по факту та же конструкция async, хоть и выглядит простой, но несёт в себе нетривиальную реализацию и желательно это осознавать. В коллбек-хелле хотя бы всё явным образом видно.