Nadużywanie operatora ===?

1

Co myślicie o modzie, że teraz wszędzie gdzie można pcha się === i !==. Temat zastanawia mnie od dłuższego czasu i wraca co code review. I jak widzę taki przykład

dispatch(setExportTableEnabled(responseJson.status === 200))

to jest mi słabo. Nie uważacie że powinno się używać operatora domyślnego i krótszego ==? W PHP jakoś == jest częściej używany

12
assembler napisał(a):

I jak widzę taki przykład

dispatch(setExportTableEnabled(responseJson.status === 200))

to jest mi słabo.

Czemu jest Ci słabo?

Nie uważacie że powinno się używać operatora domyślnego i krótszego ==?

Nie

13

Ja tam jestem za tym, żeby było więcej równości.
Im więcej równości tym lepiej.
===============================================

3

po co używać dwóch? można się pomylić, nie lepiej wszędzie używać ===.

Gdzie === sprawdza dodatkowo typ danych

5

Podstawowe pytanie - w czym to przeszkadza? Możesz jakoś uzasadnić, co w tym złego? Bo ja uważam (podobnie do @phanc powyżej) - taki zapis sprawdza nie tylko wartość, ale typ, więc robi to samo co wersja krótsza, ale jeszcze ma bonus.

No chyba, że ktoś chce porównać wartości, ale nie patrząc na typ - tylko wtedy to nie jest kwestia preferencji, ale odpowiedniego doboru do potrzeb, więc także nie zalicza się to do tematyki tego wątku. W każdym razie - nie widzę niczego złego w zastosowaniu operatora identyczny zamiast równy.

3

A mi słabo, jak widzę mały projekt w reactcie i nawalone reduxy i customowy hooksy do niego.

Kogoś jeszcze coś słabi?

4
jarekr000000 napisał(a):

Ja tam jestem za tym, żeby było więcej równości.
Im więcej równości tym lepiej.
===============================================

To całkiem dobry pomysł. Żeby jeszcze każdy znak równości odpowiadał polu obiektu, byłoby to fajne sprawdzanie całego drzewa. Powiedzmy, że mamy kod

class Point {
    int x, y;
public:
    Point(): x(0), y(0) {}
};
//---
    auto p1 = Point();
    auto p2 = Point();

    if (p1 ==== p2) {
        cout << "dupa" << endl;
    }

Niech będzie to == jako porównanie referencji plus dodatkowy znak dla każdego kolejnego pola w klasie. Pójdźmy krok dalej i napiszmy kolejną klasę!

class Rectangle {
    Point corners[4];
public:
    Rectangle() = default;
};
//----

    auto r1 = Rectangle();
    auto r2 = Rectangle();

    if (r1 ============== r2) {
        cout << "dupa" << endl;
    }

Mamy tu dwa standardowe znaki równości + 4 * (referencja + 2 pola). Razem 14 :) .

0
urke napisał(a):

Kogoś jeszcze coś słabi?

Standardowo. Metody zaczynające się od wielkiej litery i ludzie którzy nie wiedzą że istnieje polimorfizm poza językami OOP

8
PerlMonk napisał(a):
  if (r1 ============== r2) {
      cout << "dupa" << endl;
  }

To mi się podoba. Nie dość, że podkreśla równość między r1 i r2 (zdodnie z hasłem: wszystkie rn są równe) to jeszcze zgodne z zasadami dystansu społecznego, ogranicza przenoszenie się zarazków.

1

Stosuje się w zależności od potrzeby więc co ci takiego w tym nie tak? to tak jakbyś narzekał, że ktoś czasem da if else czasem ? x : y a czasem ?: y

Aha i w php tez już się zaczyna coraz bardziej to stosować bo tez wchodzi coraz bardziej porządne typowanie.

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