|
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 116
|
||||||
Проведите ревью кода?17.11.2018, 12:28. Показов 2664. Ответов 24
Метки нет (Все метки)
Посмотрите, пожалуйста, код - не прошёл испытательный срок - жалуются на качество. Всё ли так плохо?
0
|
||||||
| 17.11.2018, 12:28 | |
|
Ответы с готовыми решениями:
24
Написал крестики-нолики. Сделайте ревью кода Ревью небольшого кода
|
|
|
||||||
| 17.11.2018, 12:35 | ||||||
![]() Динамик - зло, делегаты - зло (да простят меня адепты функциональщины)
0
|
||||||
|
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 116
|
|
| 17.11.2018, 12:42 [ТС] | |
|
На комментарии, пустые методы можно не обращать внимание
Добавлено через 3 минуты внешний try-catch ловит факт некорректного ответа на запрос (это так и было), внутренний - некорректную десериализацию
0
|
|
|
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 116
|
|
| 17.11.2018, 12:54 [ТС] | |
|
если измениться формат АПИ, при десериализации выпадет ошибка, catch её запишет в лог - так я думал
return null по их логике возвращается при любом исключении. в это я лезть не стал
0
|
|
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
|||||
| 17.11.2018, 16:00 | |||||
В общем ладно , тут действительно можно придраться к каждой функции , если это SDK для стороннего разработчика - то ему не позавидуешь. Принцип "Разделяй-И-Властвуй" не соблюдается.
0
|
|||||
|
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 116
|
|||||||
| 19.11.2018, 10:44 [ТС] | |||||||
|
Добавлено через 10 часов 53 минуты
Добавлено через 3 минуты Упростил десериализацию:
0
|
|||||||
|
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
|
|||||||
| 19.11.2018, 14:49 | |||||||
|
нужно правильно делать структуру классов JSON, по Вашему примеру она такая:
0
|
|||||||
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
||
| 19.11.2018, 23:55 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 116
|
|||||||||||||||||||||||||||||||||||||||||
| 20.11.2018, 20:45 [ТС] | |||||||||||||||||||||||||||||||||||||||||
|
Сделал рефакторинг. Какая работа была проведена:
1. разделил на методы, вынес многие в BaseManager 2. упростил названия переменных 3. перенёс все try-catch в базовый класс BaseManager 4. сгруппировал методы по доступу (вверху private, далее publiс) 5. было:
а в нём поле Value 7. Вынес константы:
Как лучше? 8.
что это параметр. Или по типу можно понять, наведя мышкой? 9. В UserName.cs я бросаю исключение, как мне посоветовали. Но везде по коду ошибки пишутся в лог. Согласно стилю предыдущего кода мне тоже надо в лог писать? 10. JSON.cs, RootObject.cs, UserName.cs поместил в папку Model 11. Избавился от dynamic Если какие-то пункты некорректны, исправьте, пожалуйста. + напишите что ещё исправить
0
|
|||||||||||||||||||||||||||||||||||||||||
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 21.11.2018, 10:22 | |
|
Свойство при каждом обращении создающее новый обьект это плохо потому что неочевидно.
Нет единообразия стиля именования полей. Микс констант и readonly полей. Manager это ничего не говорящее название. GetObjVal тоже не несет никакой информационной нагрузки.
0
|
|
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
||
| 21.11.2018, 11:20 | ||
Сообщение было отмечено olegall как решение
РешениеЭто всего навсего SendsayHttpClient , который должен отражать максимально приближенный функционал по api документации, а пользователь данного клиента уже сам решит , какие ему абстракции поверх нужны и как обернуть для себя удобнее.
0
|
||
|
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 116
|
||
| 21.11.2018, 11:42 [ТС] | ||
|
Вместо const везде можно использовать readonly? Как я понял основное отличие, что readonly поле через конструктор можно изменить, т.е. есть дополнительный манёвр?
Добавлено через 2 минуты
0
|
||
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
|
| 21.11.2018, 11:45 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 116
|
|
| 21.11.2018, 11:49 [ТС] | |
|
0
|
|
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
|
| 21.11.2018, 12:29 | |
|
Ну смотрите , как обычно пишут клиентов для апи под разные языки.
В первую очередь , я как пользователь смотрю на документацию api , дальше качаю готовый клиент на c# и ожидаю увидеть методы и структуры в соответствии с документацией. Дальше , уже исходя из логики своего приложения , я оборачиваю апи клиента в свои бизнес.сервисы и использую методы апи в нужной мне последовательности. Т.е сам клиент апи должен четко соответствовать документации , иначе придется писать еще и документацию на реализацию , а пользователь должен будет не только доку по апи изучить , но и доку по вашему клиенту , дабы понять как им вообще пользоваться , какие его методы соответствуют методам реального сервиса по апи. И еще , чем Вы обоснуете применение интерфейса IApiConfig в конструкторе , почему нельзя настройки передать простыми типами аргументов не обременяя данным интерфейсом ? - интерфейс уместен тогда , когда предполагаются различные варианты реализации , какие варианты тут могут быть ? - передача комплексного типа конфигурации в конструктор уместна тогда , когда этот комплексный тип конфигурации используется в нескольких классах и содержит какую то общую логику их конфигурирования. , а тут это чем обосновано ? Аналогичные вопросы можно задать по отношению к прочим интерфейсам связанным с веб.апи интерфейсами , - Вы полагаете , что реализация клиента может быть в будущем переопределена ? Вопрос , я как пользователь апи , какие плюшки от наличия интерфейсов получаю ? - у нас что , протокол взаимодействия с сервисом api планируется меняться ? - обычно , тогда и интерфейс как правило меняется. Т.е мысль такая - не нужно перегружать код неуместными абстракциями с сомнительной перспективой использования , это усложняет жизнь без необходимости. - насколько это тут уместно Вам возможно виднее , но я как пользователь не вижу для себя пользы от их наличия в рамках текущей реализации , они даже нигде в других местах не используются.
0
|
|
|
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 116
|
|||
| 21.11.2018, 12:34 [ТС] | |||
|
Код, который я поместил первым - это до рефакторинга. В таком стиле выполнен остальной код. На меня грузили за качество, но я так понял качество везде плохое?
0
|
|||
|
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
|
|
| 21.11.2018, 12:48 | |
|
0
|
|
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
|||
| 21.11.2018, 13:02 | |||
|
0
|
|||
|
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 116
|
||||||||||||
| 21.11.2018, 13:22 [ТС] | ||||||||||||
0
|
||||||||||||
| 21.11.2018, 13:22 | |
|
Помогаю со студенческими работами здесь
20
Метод getline(cin, m) не срабатывает без cin.ignore() / Ревью кода Код ревью
Код ревью Код ревью Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение
Это мой обзор планшета X220 с точки зрения школьника.
Недавно я решила попытаться уменьшить свой. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|