Czytałem wiele razy i zgadzam się z unikaniem użycia globałów, aby zachować ortogonalny kod. Czy użycie pliku konfiguracyjnego do przechowywania informacji tylko do odczytu, których używa twój program, jest podobne do korzystania z Globali?Użycie pliku konfiguracyjnego jest równoznaczne z używaniem globali?
Odpowiedz
Jeśli używasz plików konfiguracyjnych w miejsce globów, to tak, są podobne.
Pliki konfiguracyjne powinny być używane tylko w przypadkach, gdy użytkownik końcowy (prawdopodobnie użytkownik znający komputer, taki jak programista) musi zadeklarować ustawienia aplikacji lub fragmentu kodu, jednocześnie trzymając ręce poza samym kodem .
Moja pierwsza reakcja byłaby taka, że to nie to samo. Myślę, że problemem z globalnymi jest scenariusz odczytu i zapisu. Pliki konfiguracyjne są tylko do odczytu (przynajmniej pod względem wykonania). W ten sam sposób stałe nie są uważane za złe zachowanie programistyczne. Pliki konfiguracyjne, przynajmniej w sposób, w jaki ich używam, są po prostu łatwymi do zmienienia stałymi.
Pliki konfiguracyjne powinny być łatwe do edycji przez użytkownika końcowego jako sposób przekazania programu.
Bardziej wyspecjalizowana forma plików konfiguracyjnych, preferencji użytkownika, służy do pamiętania rzeczy między wykonaniem programu.
Globalny jest powiązany z unikalną instancją obiektu, która nigdy się nie zmieni, a plik konfiguracyjny jest używany jako kontener dla wartości odniesienia, dla obiektów w aplikacji, które mogą się zmieniać.
Jeden obiekt "globalny" nigdy się nie zmienia w czasie wykonywania, drugi obiekt jest inicjowany przez plik konfiguracyjny, ale może się później zmienić.
W rzeczywistości obiekty te nie tylko mogą ulec zmianie w trakcie trwania aplikacji, ale mogą również monitorować plik konfiguracyjny w celu realizacji "zmiany na gorąco" (modyfikacja ich wartości bez zatrzymywania/ponownego uruchamiania aplikacji), jeśli to plik konfiguracyjny został zmodyfikowany.
Cóż, ponieważ plik konfiguracyjny i zmienna globalna mogą wywoływać zmiany w całym systemie - są z grubsza podobne.
Ale ... w przypadku pliku konfiguracyjnego zmiana ma zwykle miejsce w pojedynczej, dobrze widocznej lokalizacji (dla programisty), a zmienne globalne mogą wpływać na zmianę w bardzo podstępnym i trudnym do śledzenia w dół drogi - tak w ten sposób dwa pojęcia nie są podobne.
Posiadanie pliku konfiguracyjnego zwykle pomaga z DRY concepts i nie powinno to również zaszkodzić systemowi orthogonality systemu.
Punkty premiowe za użycie słowa "ortogonalne" 25 USD. Musiałem to sprawdzić w Wikipedii, żeby znaleźć definicję nieeuklidesową.
Tak, czytanie Pragmatyczny programista i przedmiot globaliów jest wprowadzany po oddzieleniu. Pomysł na pliki konfiguracyjne przyszedł mi na myśl i chciał określić ich poziom zła. – osp70
Nie są one absolutnie takie same lub zastępstwa dla siebie nawzajem. Plik konfiguracyjny lub obiekt może być używany nie globalnie, tzn. Przekazywany jawnie.
Oczywiście można mieć zmienną globalną, która odwołuje się do obiektu konfiguracyjnego, a to byłoby celem przeciwnym.
- 1. Użycie adnotacji @Parameter lub ITestContext do odczytania pliku konfiguracyjnego TestNG?
- 2. odczytać wartości parametrów Attribute z pliku konfiguracyjnego
- 3. Jak importować z pliku konfiguracyjnego w kolbie?
- 4. Jak skonfigurować kolbę app.logger z pliku konfiguracyjnego?
- 5. wpf - Pobierz wartości z pliku konfiguracyjnego aplikacji
- 6. Czytanie punktu końcowego z pliku konfiguracyjnego
- 7. Hocon: Odczytaj tablicę obiektów z pliku konfiguracyjnego
- 8. ConfigurationManager.AppSettings użyć innego pliku konfiguracyjnego
- 9. Znajdź nazwę bieżącego pliku konfiguracyjnego
- 10. svcutil nie generuje pliku konfiguracyjnego
- 11. Wymuś GCC aby zrezygnować z niektórych globali
- 12. Użyj pliku konfiguracyjnego RequireJS jako pliku kompilacji?
- 13. Udostępnianie obiektów i unikanie globali w pliku node.js
- 14. co jest równoznaczne z „dosłownego” tag w ASP.NET MVC
- 15. Co jest równoznaczne z auto_now, auto_now_add Django w SQLAlchemy?
- 16. Jaka jest lokalizacja pliku konfiguracyjnego w Dockerze 1.9?
- 17. Jaka jest lokalizacja pliku konfiguracyjnego w Neo4J 3.0?
- 18. Jak sparametryzować właściwość baseUrl pliku konfiguracyjnego kątomierza
- 19. Jak mogę uzyskać ConnectionString Nazwa pliku konfiguracyjnego
- 20. Zmiana pliku konfiguracyjnego w pakiecie Visual Studio
- 21. Różnica między używaniem metody getConnection() a używaniem puli bezpośrednio w pliku node.js z modułem node-mysql?
- 22. Ładowanie niestandardowego pliku konfiguracyjnego do biblioteki Codeigniter
- 23. Odczytywanie i używanie niestandardowego pliku konfiguracyjnego
- 24. InstallShield nie tworzy jednego dużego pliku konfiguracyjnego
- 25. Opracowywanie i testowanie pliku konfiguracyjnego logrotate
- 26. Określanie niestandardowego pliku konfiguracyjnego dla CKEditor
- 27. Pobierz ścieżkę do pliku konfiguracyjnego bieżącej aplikacji
- 28. Błąd Log4j2 przy ładowaniu pliku konfiguracyjnego XML
- 29. Ponowne ładowanie pliku konfiguracyjnego w VsVim?
- 30. Boost Program_options - komentarze do pliku konfiguracyjnego
Nie miałem na myśli, że pierwsza część tej odpowiedzi brzmi snippy. Chodzi mi o to, że pliki konfiguracyjne nie są opcją do obejścia, aby zapobiec globalom. –