Zacząłem, podobnie jak wiele innych, programować na konsoli (jak w terminalu, a nie Playstation). Ale prędzej czy później trzeba dotknąć programowania opartego na GUI, czy chcesz, czy nie. To przejście zawiera wiele zmian w sposobie myślenia o frontendzie (i ewentualnie również backendu).
Jakie są główne różnice przy przechodzeniu z programowania na konsolę do programowania na GUI?
Odpowiedzi:
Największą różnicą jest konstrukcja interfejsu użytkownika. Dobry GUI może utworzyć lub przerwać aplikację. Fani Maca zwracają uwagę na pięknie zaprojektowane GUI przeciętnej aplikacji Mac OS X i mają rację, ale to nie jest problem technologiczny - to kwestia projektu / etosu / użyteczności.
Jeśli chodzi o kwestie techniczne, w żadnej szczególnej kolejności:
Użytkownik może w dowolnej chwili zrobić wszystko, co chce, w dowolnej kolejności, w przeciwieństwie do programu konsoli, w którym albo pytasz o dane wejściowe, albo podajesz dane wyjściowe. Nie możesz założyć, że będą postępować zgodnie z oczekiwaną kolejnością, chyba że wymusisz styl pracy Kreatora.
Jak już wspomniano, wydarzenia odgrywają w tym dużą rolę, a podczas obsługi ostatniego może się zdarzyć wiele zdarzeń, więc nie można tak naprawdę zbudować swojego stanu na podstawie „bieżącego zdarzenia”. Użyj zamknięć lub podobnego mechanizmu, aby zachować kontekst dla różnych zdarzeń. W aplikacji konsolowej FSM jest zwykle samowystarczalny wokół pętli „get input, process input, update output”. Nie ma tego samego rodzaju struktury w programowaniu GUI - „main” to ponownie sterowana zdarzeniem rzecz, często gigantyczna instrukcja switch ().
Musisz wziąć pod uwagę różne rozmiary / rozdzielczości ekranu i pozwolić, aby GUI zmieniło rozmiar z 800x600 na maksimum monitora użytkownika.
Musisz wziąć pod uwagę różne strategie wprowadzania - mysz, klawiatura, dotyk itp. Niektóre technologie są dostępne za darmo (przewijanie kółkiem myszy), inne wymagają pracy integracyjnej (atrament).
Dostępność - graficzny interfejs użytkownika jest znacznie bardziej odpowiedni dla mniej sprawnych użytkowników, którzy mają ograniczone widzenie, słuch, zdolności ruchowe lub zdolności poznawcze. Hałas „ding” jest przyjemny i oczywisty w porównaniu do tajemniczego komunikatu o błędzie na konsoli.
Internacjonalizacja - zakładam, że twoja aplikacja konsolowa jest tylko dla US / ANSI, ale kiedy wejdziesz do GUI, możesz mieć pakiety językowe / zasobów, które mogą kierować reklamy na inne języki i regiony bez zmian w kodowaniu, jeśli przygotowałeś się na to z początek. Na przykład brak zakodowanych ciągów językowych w kodzie - wszystko jako wyszukiwanie zasobów.
Masz o wiele więcej opcji technologii wdrażania - oparte na sieci, różne zestawy GUI, Flash / WPF itp.
Wykorzystanie koloru i animacji. Programy konsolowe są zazwyczaj monochromatyczne i nie animują zbyt wiele. Wiele nowoczesnych frameworków GUI zapewnia widżety tematyczne i ma efekty animacji ruch / rozmiar / pokaż / ukryj, często za darmo.
Grafika. Aplikacje konsolowe czasami używają grafiki ASCII do tworzenia diagramów, ale aplikacja GUI zapewnia pełną zdolność graficzną. Piękna sztuka może mieć również duże znaczenie.
źródło
Dla mnie przyzwyczai się do programowania sterowanego zdarzeniami. Nadal może mieć zastosowanie do oprogramowania opartego na konsoli, ale uważam, że jest ono najczęściej używane z GUI. Po jego uchwyceniu jest to bardzo potężne narzędzie.
źródło
Powiedziałbym, że wielowątkowość i jej implikacja dla interfejsu użytkownika (jeśli chcesz wykonywać nieblokujące interfejsy użytkownika)
źródło
Bardzo ważne jest uwzględnienie przepływu kontroli w interfejsie użytkownika i sprawdzenie poprawności danych wprowadzanych przez użytkownika.
źródło
Z czasem program konsolowy jest dopracowywany, podczas gdy program GUI ma tendencję do wkręcania.
źródło
Zwykle myślę o programie konsolowym jako o Modelu, podczas gdy program oparty na GUI to Widok / Kontroler, który osadza Model.
źródło
Dla mnie zaprojektowanie dobrego GUI zawsze było o wiele trudniejsze niż techniczne szczegóły jego wdrożenia.
Łatwo powiedzieć „uprość to i wyjaśnij, jak komputer Mac”. Bardzo trudno to zrobić; zawsze jest tak wiele szczegółów, które powinny być dostępne, ale jednocześnie powinny być niewidoczne.
prostota http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png
źródło
W niektórych (wielu?) Językach dla mnie główna różnica polega na tym, że teraz musisz wybrać bibliotekę. Robiąc „konsolę” programując szkielet (i wiele więcej, przy odrobinie szczęścia) twojej aplikacji, korzystaj ze standardowych zasobów swojego języka. Dodając GUI, możesz (miejmy nadzieję) nadal mieć swój „model” w standardowych idiomach, ale teraz ogromna część, „widok” będzie zależeć od jakiejś zewnętrznej biblioteki (i, niestety, pozostaniesz przy nim „na zawsze”). Wybór tej biblioteki jest ogromnym obowiązkiem dla początkującego, podobnie jak twój (mój) przypadek (nie wspominając o dodatkowej krzywej kroku uczenia się).
źródło