{"action":"created","issue":{"url":"https://api.github.com/repos/OUGHT/quagga/issues/5","labels_url":"https://api.github.com/repos/OUGHT/quagga/issues/5/labels{/name}","comments_url":"https://api.github.com/repos/OUGHT/quagga/issues/5/comments","events_url":"https://api.github.com/repos/OUGHT/quagga/issues/5/events","html_url":"https://github.com/OUGHT/quagga/pull/5","id":119304126,"number":5,"title":"Lesson 7","user":{"login":"OUGHT","id":6378091,"avatar_url":"https://avatars.githubusercontent.com/u/6378091?v=3","gravatar_id":"","url":"https://api.github.com/users/OUGHT","html_url":"https://github.com/OUGHT","followers_url":"https://api.github.com/users/OUGHT/followers","following_url":"https://api.github.com/users/OUGHT/following{/other_user}","gists_url":"https://api.github.com/users/OUGHT/gists{/gist_id}","starred_url":"https://api.github.com/users/OUGHT/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OUGHT/subscriptions","organizations_url":"https://api.github.com/users/OUGHT/orgs","repos_url":"https://api.github.com/users/OUGHT/repos","events_url":"https://api.github.com/users/OUGHT/events{/privacy}","received_events_url":"https://api.github.com/users/OUGHT/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-11-28T16:14:45Z","updated_at":"2015-11-30T05:45:57Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/OUGHT/quagga/pulls/5","html_url":"https://github.com/OUGHT/quagga/pull/5","diff_url":"https://github.com/OUGHT/quagga/pull/5.diff","patch_url":"https://github.com/OUGHT/quagga/pull/5.patch"},"body":""},"comment":{"url":"https://api.github.com/repos/OUGHT/quagga/issues/comments/160523590","html_url":"https://github.com/OUGHT/quagga/pull/5#issuecomment-160523590","issue_url":"https://api.github.com/repos/OUGHT/quagga/issues/5","id":160523590,"user":{"login":"OUGHT","id":6378091,"avatar_url":"https://avatars.githubusercontent.com/u/6378091?v=3","gravatar_id":"","url":"https://api.github.com/users/OUGHT","html_url":"https://github.com/OUGHT","followers_url":"https://api.github.com/users/OUGHT/followers","following_url":"https://api.github.com/users/OUGHT/following{/other_user}","gists_url":"https://api.github.com/users/OUGHT/gists{/gist_id}","starred_url":"https://api.github.com/users/OUGHT/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OUGHT/subscriptions","organizations_url":"https://api.github.com/users/OUGHT/orgs","repos_url":"https://api.github.com/users/OUGHT/repos","events_url":"https://api.github.com/users/OUGHT/events{/privacy}","received_events_url":"https://api.github.com/users/OUGHT/received_events","type":"User","site_admin":false},"created_at":"2015-11-30T05:45:57Z","updated_at":"2015-11-30T05:45:57Z","body":"> А теперь приводим код в порядок: методы, связанные с установкой лучшего ответа, должны остаться в одном классе (и по-хорошему, это должен быть один метод, а не шесть).\r\nА не могли бы вы пояснить, _почему_? В Фаулере, \"Рефакторинг. Улучшение существующего кода\", говорится, что extract method - нормальный и правильный подход.\r\nСваливать все в одну кучу, сводя три метода \"добавление лучшего, удаление, переключение\" к одному, и убирая \"сахарную\" переадресацию, заставляя менять состояние одним и только одним способом - разве это Ruby way?\r\n\r\n> И во-вторых, нужно сделать так, чтобы запросы на очистку лучшего ответа и на обновление флага у нового лучшего либо всегда выполнялись оба, либо ни один из них.\r\nЭ-м-м, почему они обязаны выполняться вместе? Я вполне могу убрать лучшесть с предыдущего лучшего и при этом не поставить новый лучший ответ, согласно бизнес-логике."}}