Wpis z mikrobloga

O konwencje nazewnicze się rozchodzi. Kiedy mamy normalną pętle for jej zmienna nazywa się i, później w pętlach wewnętrznych j, k. W pętli działającej na iteratorach jest to zwykle it lub iter. A w pętli zakresowej? Napiszcie jak zwykle nazywacie zmienną w konstrukcji:

for(typ zmienna : kontener)
#programowanie #stylkodowania #java #cpp
  • 21
  • Odpowiedz
@Onoki: staram się nigdy nie używać foreach, ale jak już gdzieś jest to bardziej odpowiednie niż for i, to lista ma ma nazwę mnogiego rzeczownika, np. walls, users, więc foreach(user: users), to samo w ruby users.each{|u| ...}
  • Odpowiedz
staram się nigdy nie używać foreach


@kradzionyLogin: Dlaczego? Jest bardzo wygodna i czytelna. Kiedy widzisz normalną pętle for, to pierwsze co robisz, to zastanawiasz się nad jej zakresem. Kiedy widzisz foreach od razu masz pewność, że zakresem jest cały pojemnik.
  • Odpowiedz
@sylwke3100: Ok, chociaż takie krótkie nazwy nie są moim znaniem dobre. Kod się czyta 10 razy więcej niż pisze i o ile Ty na pewno zapamiętasz co to jest to Edges, to osoba czytająca Twój kod kilka razy się wróci do definicji. Zacząłem to rozumieć kiedy dostałem #!$%@? przy pracy nad kodem kolegi. Polecam, pouczające doświadczenie. :)
  • Odpowiedz
@Onoki: nie każdy język i programista zna foreach, ja bardzo nie lubię tej metody, zdarzył mi się commit gdzie 3 zmienione linijki to była zamiana foreach na for i... jak wrzucasz jakiś vector, liste czy kontener to ona zawsze ma metodę size czy length i nie ma co sie zastanawiac nad zakresem. dla mnie jest ona bardzo nieczytelna, 1. ma składnię trójargumentowego wyrazenia warunowego, 2. wprowadza dodatkową zmienną o zakresie
  • Odpowiedz
@kradzionyLogin: Czyli jesli w javie nie ma wskaznikow to nie nalezy ich uzywac w cpp bo "nie kazdy jezyk i programista zna wskazniki"? Ciekawe twierdzenie. Chyba po to sa roznie "bajery" w roznych jezykach by z nich korzystac.
  • Odpowiedz
@kuhar: Dziękuję bardzo, jutro chętnie przejrzę bo dzisiaj jestem zarobiony. :) Mógłbyś mi tak na szybko wytłumaczyć co to jest ta podwójna referencja? Czemu nie wystarczy samo

auto&
?
  • Odpowiedz
@Onoki: Bardzo dlugo wyjasniac, poczytaj sobie o universal references: http://scottmeyers.blogspot.com/2012/11/universal-references-in-c11-now-online.html i objezyj prezentacje: http://channel9.msdn.com/Shows/Going+Deep/Cpp-and-Beyond-2012-Scott-Meyers-Universal-References-in-Cpp11 . I ew. potem o reference collapsing: http://thbecker.net/articles/rvalue_references/section_08.html .

Tak w wielkim skrocie jest w linku pozwyzej wyjasnione: auto& nie dziala poprawnie dla proxy (np.

vector
)
  • Odpowiedz
@kradzionyLogin: no mniejsza, jeszcze sie w jave za bardzo nie zglebialem. Ale chodzilo mi o to ze skoro jest cos napisane by ulatwic prace to chyba warto z tego korzystac, a nie wychodzic z zalozenia ze "nie kazdy jezyk to posiada, nie kazdy programista to zna".
  • Odpowiedz
@sylwke3100: no to niby ruby też ma metodę .each dla kontenerów, ale używa ona mapowania nie interowania wygląda to tak lista.each{ |interator| ...reszta... } zupelnie odbiega to od składni foreach(interator:lista){}
  • Odpowiedz