C hata yönetimi için goto geçerli kullan?
Bu soru aslında programming.reddit.com interesting discussion bir süre önce bir sonucudur. Bu temelde aşağı aşağıdaki kodu kaynar:
int foo(int bar)
{
int return_value = 0;
if (!do_something( bar )) {
goto error_1;
}
if (!init_stuff( bar )) {
goto error_2;
}
if (!prepare_stuff( bar )) {
goto error_3;
}
return_value = do_the_thing( bar );
error_3:
cleanup_3();
error_2:
cleanup_2();
error_1:
cleanup_1();
return return_value;
}
goto
kullanımı buraya gitmek için en iyi yol olarak, tüm olanakları en verimli ve en temiz kodu, ya da bana öyle geliyor en azından sonuçlanan görünür. Steve alıntı McConnellKod Tamamlandı:
Goto rutin bir yararlıdır kaynaklar ayırır. bu kaynakları işlemleri ve sonra kaldırır kaynakları. Bir ile git, bir bölümünde temizleyebilirsin kod. Goto azaltır senin için unutma olasılığı ayırması her yerde kaynakları bir hata tespit.
Bu yaklaşım için başka bir destek geliyorLinux Aygıt Sürücülerikitap, this section.
Ne düşünüyorsun? Bu durumda C goto
için geçerli bir ifadedir? Daha kıvrık ve/veya daha verimli kod üretmek, ama goto
kaçının hangi yöntemi tercih edersiniz?
CEVAP
FWİF, hata soru bu alternatifler cevaplar verilmiş daha okunabilir ve anlaşılması kolay olması için örnek şimdiye kadar verdiğin deyim işleme buluyorum. goto
genel olarak kötü bir fikir olsa da, basit ve düzgün bir şekilde yapıldığında hata işleme için yararlı olabilir. Bir şey olsa bile bu durumda, goto
, iyi tanımlanmış ve daha fazla veya daha az yapılandırılmış şekilde kullanılıyor.
Bu yürütülebilir dosya için geçerli bi...
Geçerli hata ayıklama satır arka planı...
PyCharm çözülmemiş başvurular geçerli ...
EF 4.1 Kod İlk hata - varlık türü Some...
Ne kimliği için geçerli değerler HTML ...