Składnia języka - podstawy

0

Witam wszystkich.
Przybliże problem.
Ostatnio w frimie powstałmały konflikt jeżeli chodzi funkcje porównania.
Wydaje mi się żę większość z nas stosuje taką składnie
Dim test as String
IF test="ala" THEN
'wykonujemy jakąś akcję
ENDIF
Jeden z moich kolegów twierdzi że powinno się pisać
IF "ala"=test THEN
'wykonujemy jakąś akcję
ENDIF

Jakie jest wasze zdanie jak byście argumentowali za jednym bądź drugim i to w różnych językach programowania np: C,Pascal, JavaScript, php
pozdrawiam

0

przy porównaniu dla kompilatora to wsio rawno, mnie osobiście druga konstrukcja wydaje się nielogiczna bo przyrównuje się zmienną do stałej, ale np. konstrukcja

if coś in [...] then
nie może być zamieniona na
if [...] in coś then
bo nie przejdzie

0

IMHO pierwsza konstrukcja jest bardziej logiczna i czytelna.

0

tutaj roznicy nie ma. ale w innych jezykach moze byc, np w javie jest powazna roznica pomiedzy
if( napis.equals("mama") ) oraz if( "mama".equals(napis) ) -- to pierwsze moze rzucic NullPointerException, to drugie - nigdy.. ale w Twoim przypadku to jeden pies..

0

W C badz C++ niektorzy zalecaja uzywanie stala == zmienna z tego powodu, ze jak przez pomylke ktos walnie = zamiast == to kompilator zglosi blad.

Moze cos w tym jest ale np mi osobiscie nigdy nie zdarzylo sie zrobic takiej pomylki a czytelnosc jest imo troche gorsza.

0

Ja używam tego drugiego sposobu w jednym przypadku - jeśli zmienna jest przypisywana w warunku. Po to, aby lepiej było widoczne, że jest i porównanie i przypisanie, oraz co jest z czym porównywane. Np.

while( null != (zmienna = get_costam_costam(jakis_parametr, inne_parametr, jeszcze_inny)) )

aby porównanie do 'null' nie znalazło się gdzieś na szarym końcu. Tu na pierwszy rzut oka widać, że że do 'null' jest porównywana zawartość zmiennej, ale dopiero po przypisaniu jakiejś wartości.

Ten zapis:

while( (zmienna = get_costam_costam(jakis_parametr, inne_parametr, jeszcze_inny)) != null)

jest nieczytelny.

0

adf88 - dobra mysl, dobry przyklad

0

Ta druga konstrukcja zaprezentowana przez Darhed jest zalecana, gdyż dzięki niej łatwiej jest uniknąć błędu przypadkowego przypisania. Np. takie coś: if(zmienna=15) wg kompilatora jest jak najbardziej w porządku, ale prawdopodobnie programiście chodziło o porównanie zmiennej do 15 a nie przypisanie. Jeżeli zaś zapiszemy if(15=zmienna) to kompilator zacznie krzyczeć, że takie przypisanie jest niepoprawne. Osobiście z przyzwyczajenia używam if(zmienna==15), ale rzeczywiście czasami zdarzają się wnerwiające błędy.
Pozdrawiam

0

ee ookeeej ale to co mowisz odnosi sie do jezyka C/C++/Java, gdzie wystepuje operator = oraz ==, a tutaj autor pisal w VisualBasic, tam nie ma w ogole operatora ==. operator '=' pojawiajacy sie w IF jest kontekstowy i zawsze oznacza porownanie, nigdy nie da rady w IFie oznaczac przypisania

btw. to 'zalecenie' znam, ale IMHO to jest tylko "dobra rada na poczatek dla noobow". autentycznie nie widzialem jeszcze zeby doswiadczony programista trzepnal sie w ten sposob. u nich, znacznie czesciej za to widze bledy w stylu:

while(i<j)
    i==next(i);

co jest, oczywiscie, prawidlowym wyrazeniem, tylko bezsensu :) przyzwyczajenie do pisania == jest silne..

0

Czy tylko mi sie nigdy nie myli = z ==? :)

// mnie również, trzeba po prostu patrzeć na pisany kod... (dop. deus)
</i>

1 użytkowników online, w tym zalogowanych: 0, gości: 1