Я разрабатываю программное обеспечение для связи с устройством.
Программное обеспечение отправит команды для устройства. Устройство должно ответить, используя протокол ниже:
<STX><STX><COMMAND>[<DATA_1><DATA_2>...<DATA_N>]<CHKSUM><ETX>
где:
<STX> is the Start of TeXt (0x55);
<COMMAND> can be 0x01 for read, 0x02 for write, etc;
<DATA> is any value;
<CHKSUM> is the checksum;
<ETX> is the End of TeXt (0x04).
Итак, я должен проверить полученные данные.
Затем полученные данные:
- не может быть пустым;
- должен содержать 3 или более символов;
- должен иметь заголовок в первых двух символах строковых данных;
- должен иметь нижний колонтитул в последнем символе строковых данных;
- должен иметь действительную контрольную сумму.
Если ответ верный, тогда я могу обработать данные. Но прежде чем мне придется извлечь эти данные из полученного ответа.
Хорошо, это относительно простая задача. Раньше я делал это по процедурному принципу, используя только одну функцию и помещая множество if.
Теперь я больше изучаю хорошие практики программирования, кажется, что все становится сложнее.
Чтобы проверить ответ устройства, лучше, например, создать класс «ValidateReceivedData» и передать полученные данные в конструктор этого класса? А затем создайте открытый метод с именем «IsReceivedDataValid», который проверяет все шаги, указанные выше?
Или, может быть, лучше создать библиотеку с несколькими функциями для проверки полученных данных?
Я бы тоже хотел использовать модульный тест.
Как я уже говорил, я изучаю больше, чтобы сделать лучший код. Но я понимаю, что сейчас трачу больше времени на программирование, чем раньше. И возникает слишком много вопросов, но, на мой взгляд, они кажутся легко решаемыми, но я не получаю.