2013-03-10 10 views
5

Jako przykład można podać funkcję węzła asynchronicznego fs.stat(). Jeśli potrzebuję użyć pliku fs.stat(), a następnie zrobić to później, wynik zostanie zacieniowany.Czy źle jest śledzić zmienne wywołania zwrotnego?

fs.stat(file, function(err, stats) { 
    fs.stat(file, function(err, stats) { 
    }); 
}); 

err zmienna, jak również stats zmienna jest zasłonięta - ma to znaczenia, nawet jeśli nie będzie używany przez pierwsze zwrotnego wewnątrz drugiej? Czy lepszą praktyką jest zmiana nazwy drugiej zmiennej wywołania zwrotnego?

Czy nadpisywanie tych zmiennych, raz lub wiele razy ma wpływ na wydajność?

Odpowiedz

6

Kwestia opinii, ale powiedziałbym tak - zła praktyka. W każdym przypadku istnieją dwa problemy tutaj

  • Może to być mylące dla następnej osoby (który może być ty), który potrzebuje do pracy nad tym kodem.

  • W przyszłości może być konieczne uzyskanie dostępu do zewnętrznych wartości w celu zapewnienia pewnych nowych funkcji (na przykład, aby upewnić się, że oba obiekty plików mają ten sam typ?). Wprowadzenie tej zmiany będzie wymagało irytującej i podatnej na błędy edycji całego bloku kodu.

Użyj różnych nazw, aby później uniknąć problemów.

0

Tak, to jest zła praktyka. Zależy od programisty, który ogląda, jak źle może się dostać. Jeśli mam coś takiego, pierwszą rzeczą, o której powinienem pomyśleć, byłby

Dlaczego przekazuje on do tego oddzwonienia err i ?

Podczas pracy w wielu instancjach tej samej funkcji, co teraz. Musisz upewnić się, że wszystkie zmienne mogą być dostępne niezależnie.

Jeśli nie masz pewności, że jedna zmienna lub konstrukcja nie jest już używana, możesz użyć jej ponownie. Ale musisz wspomnieć o tym w przydatnym komentarzu, aby upewnić się, że inny programista to rozumie.


Aktualizacja:

tych zmiennych na funkcje zwrotne mają limit zakresu, więc nie wpłynie na zewnątrz deklaracji funkcji.

Przykładem ważnej sprawie jest:

fs.stat(file, function(err, stats) { 

    }); 

    //Another similar functions somewhere with same varialbes 
    fs.stat(file2, function(err, stats) { 
    }); 
+0

@hexacyanide takie zmienne w zwrotnego mają limit zakresu. Tak więc, poza nimi nie zostaniemy dotknięci, problem dzieje się w nich. – Starx

Powiązane problemy