@rubylang

Страница 700 из 1684
Evgeny
26.11.2016
11:20:55
Ну это понятно, просто мб есть какая то последовательность? Я вот для себя вынес пока первое - разделение по полномочиям проверять

Alex
26.11.2016
11:21:26
Всмысле последовательность? В идеальном мире тестится все

Mikhail
26.11.2016
11:21:35
какая может быть последовательность. Перед тем как ты пишешь код, пиши на него тест

пишешь метод логики, пиши тест, потом пиши метод

Google
Evgeny
26.11.2016
11:22:13
Когда сайт конторе делал я много нашел косяков своих же, умные люди могли чужие сообщения например читать. Потом сел рефакторить и офигел от всего этого, вот тогда я понял, были бы тести сразу видно было бы где косяки

Mikhail
26.11.2016
11:23:06
Такой косяк в отсутствие тестов на авторизацию

Alex
26.11.2016
11:24:02
Таклй косяк потому что программист сам об этом не подумал

Mikhail
26.11.2016
11:24:15
ну если бы он писал тест, он сфокусировал бы внимание

Alex
26.11.2016
11:24:23
Просто тесты автоматизируют проверки и дисциплинируют проверять все кейсы.

Mikhail
26.11.2016
11:24:30
Вово, верно

и облегчают поддержку и прикручивание новых фич

Alex
26.11.2016
11:25:10
Ну и самое главное, внутри теста писать банально удобнее. Чистое повторяемое окружение

Где только то что ты тестируешь

Mikhail
26.11.2016
11:25:42
еще тесты способствуют лучшему коду

если ты незнаешь как протестить значит где то идея solid поломалась

Антон
26.11.2016
11:52:57
точнее S

OD помоему не применимо к рубям/рельсам щас освежу

Google
Антон
26.11.2016
11:54:08
не OD, LD - сомнительно

даже понять не смог

L это типа Service.run(arg) должно вызывать Service.new(arg).run?

поясните :)

def self.run(arg) Service.new(arg).run end def initialize @arg = arg end def run something end

я правильно понял?

тогда это паттерна а не принцип

кароче SOLID притащили как есть, а он из C++ как есть в рубях выглядит странно

Mikhail
26.11.2016
11:59:32
эм что тебе в D не нравится

Антон
26.11.2016
11:59:48
O нагло наршуется рубями повсеместно

Mikhail
26.11.2016
12:00:15
ну и что

мы же говорим о построении своей аппы

Антон
26.11.2016
12:00:45
от SOLID остается S__I_

Mikhail
26.11.2016
12:01:09
не строй монстрских неповоротливых абстракций и будет тебе D

Антон
26.11.2016
12:02:19
ничего не понял

наоборот же строй абстракции

Mikhail
26.11.2016
12:02:48
ключевое слово неповоротливых же

только общее описание, никаких деталей

хотя я слабо представляю рельсовых проект где куча абстракций

все обычно раскладывается на сервисы

Google
Антон
26.11.2016
12:04:07
ну допустим S__ID

Mikhail
26.11.2016
12:04:34
насчет O

это вроде песня, что манкипатчить зло

мне этот принцип не понятен из SOLID

Антон
26.11.2016
12:05:49
потому что это преимущество руби

Mikhail
26.11.2016
12:07:21
Ну идея в том, что если ты сделал класс, то его уже нельзя переназначать и его методы

а наследуя только расширять. Типа ты захотел расширить от него функционал и у тебя ничего не упадет

Антон
26.11.2016
12:08:14
а ты не можешь переназначить методы унаследованного класса в рубях

Mikhail
26.11.2016
12:08:15
Пиши класс такой, чтобы можно было наследовать и расширять, но не меняй его

Антон
26.11.2016
12:08:40
а ты не можешь :)

Mikhail
26.11.2016
12:09:21
что не могу, я могу запилить у дочки метод и переназначить его(но так делать нельзя).

Антон
26.11.2016
12:09:35
class B < A def new super something end это уже метод класса B с ним можно все делать но я не вижу возможностей сделать что-то с А

Mikhail
26.11.2016
12:11:35
я просто неудачно привел

Антон
26.11.2016
12:12:40
а я не знаю удачных примеров может йопп знает

Mikhail
26.11.2016
12:13:12
У меня есть удачный пример, но увы не мой и с платного курса. Разглашать увы не могу

Ибо достался мне бесплатно

Антон
26.11.2016
12:14:17
дану падишта притянуто за уши с извращениями

и нужно закинуться чем-то чтобы так сделать

Mikhail
26.11.2016
12:15:15
Можно сказать адаптирован под руби, но идея та же

Ну я не тот человек, чтобы судить и оценивать более опытных и прошаренных спецов

Google
Mikhail
26.11.2016
12:16:26
Я еще не все попробовал, поэтому рассуждать на тему чужих примеров сложно. У меня наследование какое то сложное встречается ну очень редко. Чаще фигачу сервисы везде и всюду

может где то получается и не совсем DRY но достаточно понятно и юзабельно

Alex
26.11.2016
12:17:02
DRY тоже аккуратно надо юзать

Mikhail
26.11.2016
12:17:20
Я бы сказал, что DRY не надо ставить во главу разработки

А то иногда так DRYят проект, навешают 100500 абстракций что не ясно как этот зверь вообще работает

и вхождение в проект выходит не дни и недели, а месяцы

Антон
26.11.2016
12:18:11
"чем ты это сказал"

эффект йожыка

Mikhail
26.11.2016
12:18:44
Да бывает

Я не успеваю писать за своими мыслями?

Admin
ERROR: S client not available

Evgeny
26.11.2016
12:19:27
https://www.sitepoint.com/7-design-patterns-to-refactor-mvc-components-in-rails/?utm_medium=email&utm_campaign=SitePoint%20Ruby%20Newsletter%20-%20November%2022%202016&utm_content=SitePoint%20Ruby%20Newsletter%20-%20November%2022%202016+CID_13d8ae9f871f00a39b5e079f6d1c45ad&utm_source=CampaignMonitor%20SitePoint&utm_term=7%20Design%20Patterns%20to%20Refactor%20MVC

Все юзают эти паттерны?

Mikhail
26.11.2016
12:19:37
ооо древняя статья подкатила

Evgeny
26.11.2016
12:19:44
Или чего лишнего есть

Странно, в рубивикли была на неделе

Mikhail
26.11.2016
12:20:12
да это классические паттерны

я не юзают value object

мне просто не приходилось

ты думаешь паттерны меняются каждый месяц?

Google
Антон
26.11.2016
12:21:21
а то пример что я привел интеракторы назвается только я не понимаю разницы между интеракторами и сервисами

Evgeny
26.11.2016
12:21:30
Не, я же не гуру проггер, но пытаюсь юзать норм варианты

Mikhail
26.11.2016
12:21:32
никакой

Evgeny
26.11.2016
12:21:40
Опередил Антон

Только спросить хотел

Mikhail
26.11.2016
12:22:03
Я в интеракторы вытаскиваю логику

Evgeny
26.11.2016
12:22:06
Они могли бы сделать метод success в сервисе верно?

Антон
26.11.2016
12:22:16
и в форм обджекте

это все по сути одно интерактор/сервис/форм_обджект

Mikhail
26.11.2016
12:22:40
сервисы у меня чаще классы-обертки под апишки и сторонние сервисы, или какой то специфичный класс

Evgeny
26.11.2016
12:23:08
Я вот думаю рефакторить вьюхи как тут в примерах или нет, с одной стороны подумаешь html, он всегда был, сдругой стороны смотришь все лаконично

Mikhail
26.11.2016
12:23:27
Интеракторы это считалки логики

Антон
26.11.2016
12:23:48
PopularVideoQuery.new.call(Attachment.all).to_sql - адский изврат

Mikhail
26.11.2016
12:24:09
Это порно

вот такое точно не надо делать

Evgeny
26.11.2016
12:24:22
scope лучше?)

Mikhail
26.11.2016
12:24:59
это абстракция над сотнями скоупов

Антон
26.11.2016
12:25:34
scope не лучше, он просто есть :)

Mikhail
26.11.2016
12:25:37
и выборка может исходить из какой то сложной логики, в скоупах не очень логично складывать

Антон
26.11.2016
12:26:47
ну вот у меня парни написали скоуп for_active_campaigns который значит joins(:campaigns).where(campaigns: { state: :active}) меня такое скорее путает

Mikhail
26.11.2016
12:26:51
Преждевременная оптимизация это как стрижка лысого

Страница 700 из 1684