W dniu 2011-12-30 23:44, tyran pisze:
> Po pierwsze same
> srodowisko: D2007 zdaza mi sie wysypac 3-4x dziennie, zwlaszcza przy
> debugowaniu, z VS nigdy nie mialem problemow i zawsze dziwi mnie gdy
> ktos pisze, ze ma problemy ze stabilnoscia VS
A mnie się nie wysypuje ani to, ani tamto. Poza tym, należy brać pod
uwagę, że VS wykonuje jednak kod zarządzany, czyli problemy ze
zwalnianiem pamięci odpadają. A najczęściej to te rykoszetem walą w IDE
Delphi.
> - modyfikacja kodu podczas debugowania oraz cofanie sie do zadanego
> miejsca (kilka linijek kodu wyzej) i ponowne przechodzenie po tych
> samych/zmodyfikowanych wierszach kodu
No nie wiem, przypomina mi to tzw. programowanie realne (to tak jak
socjalizm realny ;)), kiedy wymiatacze żyletką poprawiali kod na kartach
perforowanych, albo ich naśladowcy modyfikowali kod w dosowym debugu
(niektórzy nawet poprzez wstawianie konkretnych bajtów zamiast mnemoników).
Wolę jednak zastanowić się nad kodem i przygotować go tak, abym potem
nie musiał go poprawiać on-line, co najwyżej zakończyć program,
wprowadzić poprawki i uruchomić ponownie.
BTW w Delphi można cofnąć/przesunąć debugowanie, ale trzeba zdawać sobie
sprawę, że można tym sposobem np. ponownie naliczyć podatek.
> - dobry mechanizm podpowiedzi przy uzywaniu funkcji/procedur
> wyswietlajacy zarowno pomoc z help-a oraz wlasna, opisana nad
> funkcjami/procedurami.
E, nie rozumiem. Albo to jest Twoja twórczość - więc w helpie nic na ten
temat nie będzie, albo to jest twórczość MS i wówczas nic nie będzie w
help-insight. W D2007 ten mechanizm nadal kuleje, trzeba np. dla
deklaracji każdej klasy dodawać przed nią "type" - wówczas <summary>
działa. Niestety problemem są deklaracje zapowiadające, które muszą
występować w obrębie tego samego "type" co właściwa deklaracja.
> - automatyczne formatowanie kodu czy tworzenie wciec dla kodu
> objetego begin-end-em.
Nie rozumiem? Przecież to działa. Mnie natomiast drażni to, że w VS jak
napiszę { i wcisnę Enter, to nie robi mi końcowego } i nie wstawia
kursora pomiędzy nimi, odpowiednio wcinając. Formatowanie na pokładzie
jest od D2010, dla D2007 można korzystać Jedi Formatera (jakoś tak).
> - w delphi musze podwojnie pisac nazwy funkcji i procedur oraz
> parametry: ewentualna korekta powoduje poprawki w dwoch miejsach, do
> tego jesli ktos lubi miec zachowana kolejnosc deklaracji i definicji
> to w przypadku gdy srodowisko automatycznie tworzy mi wpisy w unicie,
> to za kazdym razem musze je "sortowac"
Wynika to z podstawowej zasady języka, aby deklaracje oddzielać od
implementacji. Skoro deklarujesz klasę (tak jak rekord), to jej
implementacja wystąpi gdzie indziej. C# jako novum mogło pójść swoją
drogą czerpiąc z poprzedników to co najwygodniejsze. Natomiast masz
możliwość szybkiego przeskakiwania pomiędzy deklaracją, a implementacją
za pomocą Ctrl+Shift+Up/Ctrl+Shift+Down.
> - w delphi wynik funkcji nie konczy funkcji .. zawsze trzeba ogarnac
> to begin-end-em i dodac exit (if not cos then begin result := '';
> exit; end;
To już Ci wyjaśniono.
> - niezrozumiala jest rowniez dla mnie koniecznosc deklaracji
> zmiennych nad begin-em w procedurach, funkcjach .. fajnie by bylo w
> kodzie wpisac var zmienna : integer = 5; i sobie jej pouzywac ;)
Znowu ta sama zasada Pascala: deklaracje oddzielnie. Niemniej jak Ci
napisał wloochacz masz mechanizm, który Ci zadeklaruje gdzie trzeba
zmienną, choć Ty pozostaniesz w tej samej linii kodu, w której chcesz
użyć tejże zmiennej. Co ciekawe, użycie w pętli zmiennej, która jeszcze
nie istnieje, powoduje jej deklarację (choć różnie do działa w D2007,
np. typem zmiennej jest object choć powinien być integer).
> - w c# mam duzo bogatsza baze metod do uzycia: obsluga
> certyfikatow windowsa, operacje na plikach/katalogach, kryptografia,
> kompresja i wiele innych: przy czym tu przyznam, ze w Delphi sporo
> jeszcze nie poznalem.
Na pokładzie niestety nie ma tego aż tyle, pozostają komponenty dodatkowe.
> - w c# mam takie cos jak "partial class" .. czyli moge rozbudowana
> klase podzielic na kilka plikow i w kazdym wpisac pogrupowany w jakis
> sposob kod: np. publiczne metody w jednym pliku, protected w innym,
> itp. (jest to wygodne w przypadku formy, gdzie czesc generowana przez
> VS jest wpisana w osobnym pliku niz wlasciwy kod programisty i przy
> rozbudowanych oknach nie trzeba przewijac dziesiatek linijek kodu).
Wloochacz już o tym napisał i ja się z Nim zgadzam. "Partial"
wprowadzono w celu obsługi form, itp. No i teraz jest nadużywane. Co do
dzielenia kodu to można to zrealizować poprzez dyrektywę {$I ...} i
włączać do modułu kod z oddzielnych plików.
> - w c# wygodnie tworzy sie biblioteki dll oraz podpina do projektu ..
> dzieki temu mozna aplikacje podzielic na nascie malych plikow i w
> razie aktualizacji wysylac tylko te zmienione.
W Delphi robi się to za pomocą BPL (taki podrasowany Borland dLL), choć
w stosunku do C# ma jeden mankament - bilbioteki środowiska też muszą
być w ten sposób dystrybuowane. Nie, zaraz, wróć! Przecież to dokładnie
to samo co .Net.Framework, który musi być zainstalowany na komputerze. A
tu nie musi być całości "Frameworka", a tylko to co niezbędne dla programu.
> - w c# mam typy generyczne, tablice asocjacyjne oraz LINQ
Ta... LINQ :>. A potem mamy takie kwiatki:
http://www.codeguru.pl/forum/watek/list-int-unikalne-wartosci-linq,619969.
Oczywiście sam LINQ jest ok, ale nie uważam, że aż taki och, ach :).
> - jest rowniez rozna konstrukcja case-a (switch-a).
Wolę tę z Delphi. Skoro mam zestaw wariantów to raczej chciałbym, aby
został wykonany jeden z nich, po co zatem jeszcze mówić, że resztę ma
pominąć?
> - nie wiem czemu przed else nie mozna dawac srednika.
Bo to jest jedna instrukcja: if ... then ... else ..., gdzie ostatnie
słowo kluczowe jest opcjonalne, takie domyślne "else nic nie rób".
> - nie wiem rowniez czemu nie ma try except finally jako calosci.
Żeby można było sobie dowolnie zagnieżdżać takie konstrukcje. Ale zgodzę
się, że jest to potrzebne rzadko, stąd zapewne C# (który "zrzynał" z
Delphi) to sobie uprościł.
> - w delphi brakuje mi podpinania wielu zdarzen (np. pod przycisk
> kilka click-ow).
To już Ci wyjaśniono.
> To tak w skrocie duzym .. obecnie najwieksza trudnosc sprawia mi
> przelaczanie sie miedzy skrotami klawiaturowymi pomiedzy Delphi 2007
> a Visual Studio 2010 .. pierwsze 3 minuty musze pomyslec co trzeba
> wcisnac .. potem juz z gorki.
Ustaw sobie środowisko w trybie zgodność z VS. Jak - napisano gdzieś w
tym wątku.
> - modyfikacje nazewnictwa kluczowych slow (np. mowie, ze w moim
> projekcje slowo begin/end zastepuje klamrami { }
Oby nie, w końcu to przestanie być w ogóle Pascal.
> - automatyczna korekte funkcji w momencie zmiany nazewnictwa
> parametrow przy deklaracji (a moze to tez jest i jeszcze tego nie
> odkrylem?)
Menu kontekstowe i Refactoring. Potem już zaczniesz używać stosownych
skrótów.
> - lepsze okno podgladu wartosci podczas debugowania (obecne w D2007
> ctrl +F7 jest slabiutkie)
Nie bardzo rozumiem co chciałbyś oglądać? Bo oprócz Ctrl+F7 jest jeszcze
Watches i na bieżąco wgląd w lokalne zmienne metody. Jest też podgląd
kodu w assemblerze.