Pull to refresh
6
0
Send message

Коды возврата vs исключения: взгляд с колокольни

Reading time4 min
Views2.5K
Просмотрев пост Коды возврата vs исключения и комментарии к нему, я заметил, что в обсуждении упущена одна нить, краткий тезис которой следующий: в некоторых языках такая проблема даже не стоИт, т.к. вопрос «что выбрать, коды возврата или исключения» в таком языке является низкоуровневым. Как, например, не стоит вопрос, каким образом реализовать конструкцию «foreach». Т.к. для программиста, использующего тот же «foreach», нет никакой разницы, использовали ли создатели языка while или for или что-то еще в имплементации данного оператора. Главное это паттерн, который представляет собой этот самый оператор.

Хватит рассуждать про foreach. Покажу непосредственно на примере два очень похожих друг на друга оператора, один из которых использует в качестве реализации «исключения», другой — «коды возврата».
Читать дальше →
Total votes 40: ↑29 and ↓11+18
Comments23

Есть ли жизнь без ORM?

Reading time3 min
Views2.6K
После перехода в наших проектах с java на clojure нам необходимо было найти замену привычным средствам работы с базами данных.

В clojure есть стандартная библиотека работы с бд clojure.java.jdbc и несколько библиотек, основанных на ней и позволяющих писать запросы в предоставляемом ими eDSL. Но для «ежедневного пользования» нам хотелось что-то по удобству напоминающее jpa и работу с ним в IDE.

Мы подумали, почему бы не написать свою библиотеку, которая бы идеально подходила нашим требованиям. А требования были следующие:

  • автодополнение таблиц, полей;
  • автодополнение констант из определенных таблиц (более позднее);
  • удобный eDSL запросов;
  • возможность без ручного запроса получать значения из таблиц, связанные по внешнему ключу (более позднее).
Читать дальше →
Total votes 18: ↑11 and ↓7+4
Comments13

«Bloated code» в коммерческой разработке ПО

Reading time3 min
Views1K
В продуктовой разработке используются согласованные внутри команды паттерны. Это не только известные паттерны проектирования, но и, например, паттерны обработки ошибок внутри системы, форматы запросов и ответов в межсистемном взаимодействии и прочее. Так же при индивидуальной разработке не все повторяющиеся по логике и структуре куски можно завернуть в методы, что тоже не способствует читабельности и простоте кода.

С ростом количества систем и их размеров при малейшем изменении паттернов приходится рефакторить кучу мест для приведения кода к заданному шаблону.

После исследования альтернативных языков на jvm мы остановились на clojure. Вот небольшой пример реализации паттерна обработки ошибки на нем.

Допустим, мы оформляем обработку ошибок в джаве следующим образом:

Читать дальше →
Total votes 21: ↑17 and ↓4+13
Comments14

Information

Rating
Does not participate
Registered
Activity