LINUX.ORG.RU

История изменений

Исправление twinpeaks, (текущая версия) :

tz4678 ★★ (08.12.21 13:31:25)

так изящно ты ни на чем не напишешь…

Офигеть, как «изящно»… Как понимаю:

  • exception handling писать при работе с СУБД не надо?
  • DbC (Design by Contract) для вход. аргументов, особенно для таких ЯПов, как Питон или Руби не надо?
  • вызов .save() синхронный?

Это, я к тому, что: «как бы твоя потрянка на Питоне выглядела бы, если все правила соблюдать при боевой коде?»

P.S. вообще хочецо покуражицо надо твоим кодом, с точки зрения логики если на стороне РСУБД я начну с MVCC играцо, аля:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ READ WRITE;

И глянуть, как ты параллельно работать будешь, если будут 2, 3 и др. клиенты, ну ладно :)

P.S. #2

По мне так, Haskell поизящнее будет, если мы сугубо только про «изяность» беседуем:

instance FromRow Present where
  fromRow = Present <$> field

instance ToRow Present where
  toRow p = [toField (presentName p)]

instance FromRow Child where
  fromRow = Child <$> field <*> liftM2 Location field field

instance ToRow Child where
  toRow c = [toField (childName c), toField (locLat (childLocation c)), toField (locLong (childLocation c))]


allChildren :: Connection -> IO [Child]
allChildren c = query_ c "SELECT name, loc_lat, loc_long FROM child"

Исходная версия twinpeaks, :

tz4678 ★★ (08.12.21 13:31:25)

так изящно ты ни на чем не напишешь…

Офигеть, как «изящно»… Как понимаю:

  • exception handling писать при работе с СУБД не надо?
  • DbC (Design by Contract) для вход. аргументов, особенно для таких ЯПов, как Питон или Руби не надо?
  • вызов .save() синхронный?

P.S. вообще хочецо покуражицо надо твоим кодом, с точки зрения логики если на стороне РСУБД я начну с MVCC играцо, аля:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ READ WRITE;

И глянуть, как ты параллельно работать будешь, если будут 2, 3 и др. клиенты, ну ладно :)

P.S. #2

По мне так, Haskell поизящнее будет, если мы сугубо только про «изяность» беседуем:

instance FromRow Present where
  fromRow = Present <$> field

instance ToRow Present where
  toRow p = [toField (presentName p)]

instance FromRow Child where
  fromRow = Child <$> field <*> liftM2 Location field field

instance ToRow Child where
  toRow c = [toField (childName c), toField (locLat (childLocation c)), toField (locLong (childLocation c))]


allChildren :: Connection -> IO [Child]
allChildren c = query_ c "SELECT name, loc_lat, loc_long FROM child"