Czy narzędzia projektantów obniżają jakość programowania? [Zamknięte]

10

Ostatnio się rozglądam, w szczególności niektóre z dostępnych narzędzi MS, i zauważam duży nacisk na narzędzia projektantów i kreatorów. Nie tylko do tworzenia interfejsu użytkownika, ale do wszystkiego.

  • Entity Framework ma modelarza
  • Usługi RIA mają kreatora DomainService
  • Workflow ma cały projektant workflow ... (Nie wiem, tak naprawdę go nie użyłem)

Jest więcej, ale myślę, że masz pomysł. Istnieje wiele narzędzi projektantów. Korzystając z niektórych z nich, stwierdzam, że:

Komplikują sprawy wykraczające poza określone przypadki użycia

(tzn. wszystkie filmy z pokazami technologii)

Ostatnio oceniałem niektóre z tych technologii i próbując z nimi pracować, musiałem dokładnie przeanalizować, co robią dla mnie projektanci, modelerzy i czarodzieje ... w przeciwnym razie zgubię się, gdy będę musiał spróbować coś z tym, co zostało stworzone.

Ostatecznie jest to przypadek, w którym muszę walczyć z narzędziem lub walczyć z jego wydajnością na tyle, że mógłbym po prostu zrobić wszystko sam bez niego - i miałem znacznie lepsze zrozumienie tego, co się dzieje. Uważam to za szczególnie denerwujące w przypadku projektanta Silverlight i kreatora usług domenowych usług RIA.

Czuję, że pytam: „Po co to narzędzie, jeśli muszę odkryć jego wewnętrzne działanie lub ponownie napisać połowę jego wyników, aby go użyć?”

Nie są tak szybkie

Punktem sprzedaży tych narzędzi jest zwiększenie produktywności i ten punkt może z czasem ulec zmianie przy użyciu narzędzia i niekoniecznie dotyczy projektantów interfejsu użytkownika (choć w niektórych przypadkach nadal tak jest -> Patrzę na Ciebie projektantem Silverlight) . Uważam, że mogę włamać się do kodu znacznie szybciej niż przeciągam i upuszczam, zmieniam rozmiar, przenoszę, cokolwiek w projektancie.

Interfejs użytkownika przeszkadza w modelu

Może to tylko ja, ale kiedy używam czegokolwiek, co przypomina narzędzie do projektowania UML, spędzam więcej czasu na układaniu wszystkiego, aby moje linie się nie krzyżowały i aby widzieć to wszystko na ekranie niż modelowanie tego, co ja staram się osiągnąć.

Nie są fajne

Połowę powodu, dla którego koduję życie, to to, że mi się podoba. Klikanie pól wyboru i wybieranie pól kombinowanych, a następnie naprawianie wszystkiego, co się pojawi, nie jest zabawne.

Nie wyglądam na samotnego

Wydaje się, że społeczność też nie chce tych narzędzi. Najlepszy przykład, jaki mogę teraz wymyślić, to Entity Framework Code-First.

Więc pytam:

  1. Czy narzędzia projektantów faktycznie poprawiają wydajność?
  2. Czy są zabójcami zabawy?
  3. Czy „społeczność” faktycznie prosi o więcej narzędzi projektantów, czy też sprzedawcy myślą, że tak jest?
Steven Evers
źródło

Odpowiedzi:

7

Domyślam się, że dobre narzędzia do projektowania poprawiają wydajność i nie zabierają „zabawy”. To jednak tylko przypuszczenie, ponieważ jeszcze nie znalazłem dobrego narzędzia do projektowania.

Osobiście nie prosiłem o narzędzia do projektowania.

dietbuddha
źródło
2
+1 Zdecydowanie lubię „jeszcze nie spotkać dobrego narzędzia do projektowania”. chociaż mógłbym dodać „lepiej niż szara istota między moimi gałkami ocznymi”.
Ken Henderson
2
+1 Czarodzieje są przydatni tylko wtedy, gdy to, co robisz, pasuje do modelu, który wcielają. Ponieważ głównie zarabia się na robieniu dziwnych rzeczy, zwykle przeszkadzają. Jedyne takie narzędzie do projektowania, które tak naprawdę mi się podobało, to (przygotuj się na szok od tego nie-fana Microsoftu) graficzna baza danych i generator zapytań w MS Access. Działa dobrze, ponieważ relacyjne bazy danych i SQL są koncepcyjnie dość proste i dobrze zdefiniowane, więc narzędzie do projektowania może obsłużyć prawie wszystko, co kiedykolwiek chcesz zrobić.
Bob Murphy,
Wszystko, co sam zbudujesz, aby pomóc ci w zadaniu, jest „dobrym narzędziem do projektowania”. Obejmuje to edytor, kompilator, debugger, biblioteki osobiste itp. Problem z większością programów typu „payware” polega na tym, że musi być wystarczająco ogólny dla wszystkich, więc zwykle nie pasuje do problemu. I nigdy nie zadają sobie trudu, aby gra była przyjemna! Przestrzegaj filozofii Unix. Nie chcę być w ścianym zestawie narzędzi ogrodniczych MS.
Spencer Rathbun
4
  1. Myślę, że to prawdopodobnie zależy. Jeśli jesteś dość niedoświadczonym programistą, korzystanie z narzędzi do projektowania jest prawdopodobnie bardziej produktywne niż pisanie. Jestem całkiem pewien, że byłem bardziej produktywny na początku VB6, używając projektanta, niż rozkręcałem go ręcznie. Inną rzeczą do rozważenia jest to, w jaki sposób technologia (a przynajmniej jak przedstawia to IDE) nadaje się do ręcznej edycji. WinBormy VB6 i .NET na pewno nie (a raczej raczej nie chcesz ręcznie edytować „wygenerowanego” pliku kodu (lub jego części). Z WPF i ASP.NET myślę, że dość niedoświadczony programista zacznie od projektant, ale szybko przeszedłem do bezpośredniej edycji XAML / ASP. Gdy już wiesz, co robisz, na pewno jest szybsza edycja znaczników bezpośrednio. Wracając do EF v1.0,

  2. Zależy, czy znaczniki są przyjemne w pracy. WPF i ASP (.NET) mogą być świetną zabawą. VB6 / WinForms - nie chcę edytować wygenerowanych sekcji kodu bardziej niż to konieczne.

  3. Nie sądzę, że społeczność wyraźnie to robi. Chociaż ucząc się czegoś nowego, projektant może ułatwić połknięcie fragmentów nauki.

Ken Henderson
źródło
2

jak zwykle to zależy

Kiedy po raz pierwszy badałem za pomocą usług internetowych, Java miała 50-stronicowy samouczek, a .NET miał kreatora. Zgadnij, który został wykorzystany?

Steven A. Lowe
źródło
1

To samo tutaj, bez narzędzia do projektowania.

Projektuję ERD bazy danych na papierze i piszę wdrażającego, który wydaje instrukcje „twórz tabelę”, w ten sposób mogę wyczyścić i odbudować do woli. Pomaga również w wersji bazy danych.

Uważam, że papier 11x17 (A3) może być doskonałym miejscem do projektowania bardzo złożonych systemów. Zdobądź dobrą gumkę i ołówki (wolę Staedtlera ).

Christopher Mahan
źródło
1

Z punktu widzenia dostawcy wszystkie te fantazyjne narzędzia projektantów wydają się służyć do celów podobnych do zniżek / bezpłatnych licencji studenckich. Chodzi o to, aby pozwolić ci stworzyć coś przy minimalnym wysiłku i kosztach. Po zainwestowaniu zakładają się, że nauczysz się poszerzać swoje umiejętności za pomocą swoich narzędzi, zamiast uczyć się czyichś umiejętności.

Nie oznacza to, że narzędzia nie mają uzasadnionego produktywnego zastosowania. To powinno być cenne dla zbadać kod wygenerowany i uczyć się od niego. Niestety, jak zauważył Ken Henderson, kod jest często nieczytelny i nie jest czymś, co chcesz wykorzystać jako szablon do przyszłych prac. Przypomniało mi się kilka sekcji w Programowaniu usług WCF , w których autor wyjaśnia, jak ręcznie napisać kod lub wygenerować go przez Visual Studio. Nieuchronnie wygenerowana opcja wymaga sekcji kontrolnej do usunięcia obcego kodu.

ajk
źródło
0

Czy narzędzia projektantów faktycznie poprawiają wydajność?

Mogą one, o ile Twój projekt jest dla nich prosty i niezbyt skomplikowany. Z mojego doświadczenia wynika, że ​​uderzyłeś w ścianę, gdy tylko spróbujesz wdrożyć / rozwiązać rzeczywisty problem.

Czy są zabójcami zabawy?

WF (Workflow) i WPF, gdzie zabawa, ale także zabójca, gdy VS 2008 rozbił się co 30 minut.

Czy „społeczność” faktycznie prosi o więcej narzędzi projektantów, czy też sprzedawcy myślą, że tak jest?

Wiele narzędzi wydanych ostatnio przez MS wydaje się być desperackimi próbami utrzymania programistów. Bitwa toczy się teraz na rynku smartfonów. Kto wygra hart programistów, MS, Google lub Apple?

Amir Rezaei
źródło
0

Zawsze tak było, nawet w czasach, gdy rozróżnialiśmy programistów, którzy wiedzieli tylko, jak klikać kreatory, oraz programistów, którzy wiedzieli, jaki kod wygenerowali i mogli go modyfikować dla przypadków skrajnych.

To, że masz jeszcze więcej narzędzi, kreatorów i projektantów, którzy robią rzeczy pod przykryciem, aby powstrzymać cię od ostrych cięć, jest zaletą dla programistów, którzy albo nie chcą wiedzieć, albo nie mają rozległości doświadczenia lub umiejętności rozumienia wygenerowanego kodu. Wyobrażam sobie, że istnieje luka między tym, co chcesz, aby komputer dla ciebie zrobił, a tym, co musisz zrobić sam, ponieważ alternatywą są języki programowania całkowicie oparte na przeciąganiu i upuszczaniu bloków do formularza. (Kiedyś pracowałem nad takim środowiskiem specyficznym dla domeny, nie chciałbym go używać!)

gbjbaanb
źródło