(no subject)
Mar. 10th, 2013 12:04 amзадумался в 125-й раз над философским вопросом - как писать ассерты в программах?
проблема тут такая, что с точки зрения девелопмента программа должна дохнуть на самом первом же ассерте, бескомпромиссно побуждая программиста её чинить.
С другой же стороны, с точки зрения надежности продукта ассерты желательно превращать в исключения или коды ошибок и вырубать ошибочно сработавшие куски функциональности. Грубо говоря, если у вас есть сервер, или программа редактирования изображений, то ронять её от какого-то там ассершена - практика очень сомнительная.
Вы мне можете сказать, а мол не офигел ли я ассершены в продакшн код ставить, но офигел не только я - например класс promise в С++ спокойно себе кидает исключения при неправильном его использовании. Ну и вообще, чего б ассершнам не быть в некотором объеме в продакшн-коде, кстати? Если они не будут гробить программу а просто прокидывать исключения.
Вот и непонятно мне -- с одной стороны программу надо натаскивать на максимальную живучесть, а с другой - это препятствует обнаружению во-время ошибок, ибо просто так на логи ошибок никто смотреть не будет.
Конечно, тут возможны комбинированные варианты -- например, сделать сообщений о фатальных ошибках максимально заметными программисту, так чтоб мимо пройти нельзя было. Но вот что-то о таких подходах я не слыхал.
проблема тут такая, что с точки зрения девелопмента программа должна дохнуть на самом первом же ассерте, бескомпромиссно побуждая программиста её чинить.
С другой же стороны, с точки зрения надежности продукта ассерты желательно превращать в исключения или коды ошибок и вырубать ошибочно сработавшие куски функциональности. Грубо говоря, если у вас есть сервер, или программа редактирования изображений, то ронять её от какого-то там ассершена - практика очень сомнительная.
Вы мне можете сказать, а мол не офигел ли я ассершены в продакшн код ставить, но офигел не только я - например класс promise в С++ спокойно себе кидает исключения при неправильном его использовании. Ну и вообще, чего б ассершнам не быть в некотором объеме в продакшн-коде, кстати? Если они не будут гробить программу а просто прокидывать исключения.
Вот и непонятно мне -- с одной стороны программу надо натаскивать на максимальную живучесть, а с другой - это препятствует обнаружению во-время ошибок, ибо просто так на логи ошибок никто смотреть не будет.
Конечно, тут возможны комбинированные варианты -- например, сделать сообщений о фатальных ошибках максимально заметными программисту, так чтоб мимо пройти нельзя было. Но вот что-то о таких подходах я не слыхал.