среда, 10 февраля 2010 г.

[comp.prog] Пример собственного синтаксического оверхеда ;)

Выработанная годами привычка подробно комментировать код иногда приводит к интересным последствиям. Вот, сегодня написал:

/*!
* Вспомогательная функция для проверки наличия TLV и размера данных в TLV.
*
* \retval 0 если TLV не найдено или если длина его данных не совпадает
* с указанной в \a expected_length.
 */
const smpp_pdu_1::opt_param_t *
check_tlv_presence_and_value_length(
   //! Хранилище TLV, в котором нужно выполнять поиск.
   const smpp_pdu_1::opt_params_holder_t & tlv_holder,
   //! Идентификатор искомого TLV.
   const smpp_pdu_1::opt_param_t::tag_type_t tag,
   //! Ожидаемый размер значения TLV.
   const smpp_pdu_1::opt_param_t::length_type_t expected_length )
   {
      const smpp_pdu_1::opt_param_t * tlv = tlv_holder.opt_params().find( tag );

      if( tlv && expected_length == tlv->length() )
         return tlv;

      return 0;
   }

Сам смотрю и ужасаюсь – двадцать две строки, из которых полезных всего шесть! Но и заставить себя выбросить что-нибудь отсюда не могу, ДНК не позволяет.

Похоже, что я даже в Haskell-е за счет своего стиля писал бы код в 2-3 раза длиннее необходимого ;)))

Отправить комментарий