Функциональные свойства кода

У программ есть очевидное свойство: “работает правильно или нет”. Но на этом все не заканчивается!

На самом деле даже “работает правильно” состоит из нескольких факторов:

  • работает правильно на любых допустимых входных данных или только на некоторых?
  • делает ли что-то разумное на недопустимых входных данных?
  • как быстро программа выполняет свою работу и как много работы выполняет в единицу времени? (производительность; иногда даже ее относят к нефункциональным свойствам)

Нефункциональные свойства кода

А кроме правильной и быстрой работы, у программного кода есть еще свойства, совсем не связанные с его поведением (функциональностью), например:

  • понятность
  • удобство для тестирования
  • удобство для поиска (“грепаемость”)
  • пригодность к будущим изменениям
  • хрупкость или ее противоположность;
    (про это есть отдельная заметка)

И что с этим делать?

В учебных заданиях нефункциональные свойства кода обычно не очень важны. В промышленной разработке ПО – наоборот, важны очень. Как минимум, стоит обращать на них внимание и задумываться о том, что делает код понятным, тестируемым и т.д.

Ссылки

Связанные заметки на SiliciumC

Внешние ссылки