Autor Wątek: [Visual C++]Generowanie cpp  (Przeczytany 3635 razy)

Offline Paweł

  • Użytkownik

# Grudzień 06, 2011, 00:00:30
I poważnie używacie tego automatycznego generowania pliku .cpp ? Czyli najpierw projektujecie interfejs klasy, jej metody i ich parametry, potem generowanie i dopiero implementacja metoda po metodzie? Ja np. pisze kawałek kodu i jak widzę że potrzebuje skorzystać z funkcjonalności którą już mam napisaną to tworzę metode i wiem jakich parametrów potrzebuje - ale do tego żadne generowanie deklaracji/definicji nie jest mi potrzebne.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Furry

  • Użytkownik
    • DevBlog

# Grudzień 06, 2011, 08:12:53
A wiesz, to zależy jak jest coś prostego i nie wymaga przemyślenia to wtedy klepie się od razu, a później najwyżej sobie dopisuję, ale jak mam jakiś gotowy/przemyślany projekt to szybciej i wygodniej jest najpierw zrobić samą strukturę w jakiej się poruszamy, a później ją sobie wypełnić zawartością. Nawet to zrobienia testów jednostkowych tak jest przyjemniej.
Ogólnie jak masz już wszystko ładnie uporządkowane to zrobienie programu jest znacznie prostsze, a przy tym kod jest bardziej przejrzysty.
Przynajmniej takie jest moje zdanie.
« Ostatnia zmiana: Grudzień 06, 2011, 08:15:51 wysłana przez Furry »

Offline rm-f

  • Użytkownik
    • Tu trolluje

# Grudzień 06, 2011, 16:41:38
np. pisze kawałek kodu i jak widzę że potrzebuje skorzystać z funkcjonalności którą już mam napisaną to tworzę metode i wiem jakich parametrów potrzebuje - ale do tego żadne generowanie deklaracji/definicji nie jest mi potrzebne.
Extract method?
http://www.youtube.com/watch?v=7KDruqCzdpc

Oti, po co szukac klasy i surfowac po menu, jezeli mozna podpiac skrot?
« Ostatnia zmiana: Grudzień 06, 2011, 16:47:53 wysłana przez świrus »

Offline Kos

  • Użytkownik
    • kos.gd

# Grudzień 06, 2011, 17:21:28
Nawet skrótu podpinać nie trzeba (chociaż to akurat chyba swój skrót domyślnie ma). Przypomnę fanom klawiatury, że magiczny klawisz "alt" pozwala obsługiwać menu oraz okna dialogowe za pomocą klawiatury - wystarczy zapamiętać krótki akord.

Offline JasonVoorhees

  • Użytkownik
    • FotoGry

# Grudzień 07, 2011, 08:06:33
Jak dobrze, że są języki, w których moduł/klasa może być w jednym pliku i nawet jest to wymagane :D (Python, PHP, Java itd.)

Offline empe

  • Użytkownik

# Grudzień 07, 2011, 18:03:50
Jak dobrze, że są języki, w których moduł/klasa może być w jednym pliku i nawet jest to wymagane :D (Python, PHP, Java itd.)

A kto Ci broni pisząc w C++ wszystko w jednym pliku?

Offline Kos

  • Użytkownik
    • kos.gd

# Grudzień 07, 2011, 18:17:18
A kto Ci broni pisząc w C++ wszystko w jednym pliku?
Oh come on. Poważnie?

Offline JasonVoorhees

  • Użytkownik
    • FotoGry

# Grudzień 07, 2011, 18:47:38
A kto Ci broni pisząc w C++ wszystko w jednym pliku?
Chodziło mi o moduły do załadowania, Python'owa klasa jest w jednym pliku bez potrzeby rozdzielania na *.h i *.cpp - pewnie znowu ktoś się odezwie, że w C++ można też klasę walnąć razem z implementacją do samego nagłówka... jednak tak się nie powinno robić w tym języku :P
« Ostatnia zmiana: Grudzień 07, 2011, 18:50:14 wysłana przez JasonVoorhees »

Offline Kos

  • Użytkownik
    • kos.gd

# Grudzień 07, 2011, 18:52:49
Dlaczego tego jeszcze nikt nie zrobił jako rozszerzenie kompilatora?

Offline rm-f

  • Użytkownik
    • Tu trolluje

# Grudzień 07, 2011, 19:03:51
jednak tak się nie powinno robić w tym języku :P
Klade na to lache. :)

Offline Snajpa

  • Użytkownik

# Grudzień 08, 2011, 11:32:22
Cytuj
C++ można też klasę walnąć razem z implementacją do samego nagłówka... jednak tak się nie powinno robić w tym języku :P

Why ?

Offline Kos

  • Użytkownik
    • kos.gd

# Grudzień 08, 2011, 12:03:17
Bo to utrudnia i/lub wydłuża (re)kompilację (long story short).

Offline Kos

  • Użytkownik
    • kos.gd

# Grudzień 08, 2011, 12:17:52
Dobre pytanie swoją drogą, jak to kompilować. Idealnie chcielibyśmy, by wszystkie funkcje składowe definiować jako inline, tj. umieszczać definicję prosto w klasie. Chcielibyśmy też, by kompilator wcale nie robił ich jako funkcji inline, gdy nie ma takiej potrzeby.

Załóżmy, że kompilator jest na tyle sprytny, że pomimo umieszczenia całej definicji każdej funkcji składowej w każdym pliku .cpp, który z niej korzysta (konsekwencja includowania takiego headera-z-implementacją) nie będzie generował kodu gorszego. Wtedy ostatnim minusem zostaje konieczność umieszczenia w nagłówku klasy kompletnych definicji wszystkich klas, które z niej korzystają (co oznacza dużo dłuższą kompilację inkrementalną, bo zmiana kodu metody wymaga przekompilowania wszystkich zależności). Mogłoby to się dobrze sprawdzać przy podejściu bulk builda, mocno reklamowanym przez jednego z forumowiczy w którymś temacie na forum (ktoś znajdzie linka?).

Imo coś takiego byłoby fajne, ale wymaga dodatkowego wsparcia ze strony kompilatora (i.e. niestandardowego rozszerzenia języka, które ominęłoby te problemy). I to może nawet byłoby warte świeczki. Da się to chyba też zrobić sprytnym preprocesorem, który nam by np. automatycznie generował nagłówki. (To nie jest głupie!)