Здравствуйте, Аноним, Вы писали:
А>Код будет в общей либе, поэтому хочется максимально проверить на возможные косяки.
я в бусте ничего не понимаю, так что могу прокомментировать все остальное
класс назвается connection, хотя завязан на udp (вариант: udp_connection)
класс не позволяет использовать его в многопоточном окружении, то есть одновременно из разных (надо задекларировать хотя бы это)
из-за предыдущего пункта не очень ясна цель асинхронного интерфейса. у вас кругом асинхронный подход ?
метод read ничего не принимает и не возвращает, это довольно странно, желательно это пересмотреть
для array вы используете [0], c_array(), data(). нельзя ли уменьшить кол-во методов, для доступа к началу массива?
методы get*buffer не возвращают размер буфера, поэтому я не представляю что полезного они дают клиенту
методы get*buffer опять же намекают, что все результаты зранятся в объекте, а не прикреплены к действиям (то есть output должен быть связан с методом read, а не с объектом connection). тут большая проблема в дизайне
метод set_outgoing_buffer не проверяет размер массива и может залезть в чужую память. если это забота клиента, но у него слишком много забот
метод set_endpoint мне странно видеть в классе connection, обычно эта сущность уже и есть настроенный канал, по которому можно слать и получать данные. настройкой каналов должен заведовать другой класс, например, connector и\или передавайте все в конструкторе
вся имплементация наружу, вы не используете интерфейсы, со всеми вытекающими последствиями
не ясно, как закрыть коннекшен, проверить его статус (закрыт или нет) или подписаться на его изменение (возможно, это не актуально для udp )
max_length не конфигурируется, хотя это могло пригодиться клиентам
успехов!
Re[2]: Прошу сделать review кода - класс udp-connection
От:
Аноним
Дата:
15.04.11 09:12
Оценка:
Здравствуйте, Sharpeye, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
А>>Код будет в общей либе, поэтому хочется максимально проверить на возможные косяки.
А>>
Да, пропущена, спасибо.
Не заметил, потому что явно вызывается из использующего класса.
Re[2]: Прошу сделать review кода - класс udp-connection
От:
Аноним
Дата:
15.04.11 09:17
Оценка:
Здравствуйте, uzhas, Вы писали:
U>Здравствуйте, Аноним, Вы писали:
А>>Код будет в общей либе, поэтому хочется максимально проверить на возможные косяки.
U>я в бусте ничего не понимаю, так что могу прокомментировать все остальное U>
U> класс назвается connection, хотя завязан на udp (вариант: udp_connection) U> класс не позволяет использовать его в многопоточном окружении, то есть одновременно из разных (надо задекларировать хотя бы это) U> из-за предыдущего пункта не очень ясна цель асинхронного интерфейса. у вас кругом асинхронный подход ?
Позволяет, просто синхронизация возложена на вышестоящий класс.
U> метод read ничего не принимает и не возвращает, это довольно странно, желательно это пересмотреть U> для array вы используете [0], c_array(), data(). нельзя ли уменьшить кол-во методов, для доступа к началу массива? U> методы get*buffer не возвращают размер буфера, поэтому я не представляю что полезного они дают клиенту U> методы get*buffer опять же намекают, что все результаты зранятся в объекте, а не прикреплены к действиям (то есть output должен быть связан с методом read, а не с объектом connection). тут большая проблема в дизайне U> метод set_outgoing_buffer не проверяет размер массива и может залезть в чужую память. если это забота клиента, но у него слишком много забот U> метод set_endpoint мне странно видеть в классе connection, обычно эта сущность уже и есть настроенный канал, по которому можно слать и получать данные. настройкой каналов должен заведовать другой класс, например, connector и\или передавайте все в конструкторе U> вся имплементация наружу, вы не используете интерфейсы, со всеми вытекающими последствиями U> не ясно, как закрыть коннекшен, проверить его статус (закрыт или нет) или подписаться на его изменение (возможно, это не актуально для udp ) U> max_length не конфигурируется, хотя это могло пригодиться клиентам U>
U>успехов!
Спасибо, все по делу.
Re: Прошу сделать review кода - класс udp-connection
Здравствуйте, Kolobrodin, Вы писали:
K>По мелочам: K>begin, end в параметрах методов можно заменить на first, last.
не очень хорошая идея, потому что обычно [begin, end), но [first, last]
Re[3]: Прошу сделать review кода - класс udp-connection
Здравствуйте, alsemm, Вы писали:
A>Здравствуйте, Kolobrodin, Вы писали:
K>>По мелочам: K>>begin, end в параметрах методов можно заменить на first, last. A>не очень хорошая идея, потому что обычно [begin, end), но [first, last]