Ponieważ Matlab jest interpretowany, zwykle spędza dużo czasu na początku funkcji wymuszającej podpis funkcji. Na przykład:Kiedy używać assert() w Matlabie?
if nargin ~= 2; error('must provide two input args a and b'); end
if a < 0||a ~=floor(a); error('input arg1 must be positive non-zero integer'); end
if ~isa(b,'cell') ...
Czy zamiast tego lepiej jest użyć Matlab's assert()? Jeśli nie, kiedy jest odpowiedni czas na użycie assert() w Matlabie?
Istnieje świetna dyskusja na temat używania assert w kodzie produkcyjnym here, ale nie jestem pewien, czy dotyczy to kodu interpretowanego. Podobnie, kolejna dobra dyskusja here i zgadzam się z @Dan Dyer odnośnie asercji, aby wyrazić przekonanie o obecnym stanie. Jednak patrząc na podobną dyskusję dla Pythona here ludzie mówią, używaj tylko asertu dla sytuacji, które nigdy nie powinny się zdarzyć (jak wyjątki w wyjątkowych przypadkach), co jest trochę sprzeczne w.r.t. poprzednie referencje.
Być może jest to bardziej pytanie o rolę asertu w interpretowanych językach, a mniej o Matlab.
Piszę kod matlab, aby wykonać wiele prototypów. Nie jestem pewien, jaki jest "właściwy" przypadek użycia, ale zasadniczo idę z interpretacją wiary w aktualny stan i używam ich często. Nie zauważyłem problemów z wydajnością podczas profilowania w dowolnej rozsądnie nowej wersji programu Matlab. Lubię ich czystość w kodzie do częstego sprawdzania zachowania. Jednak rzadko robię kod produkcyjny w Matlab :) – adalca