Pytanie ciekawosta, kod z produkcji

0

Czołem, miałbym takie pytanko. Otóż w pracy znalazłem taki kawałek kodu:

Dictionaries = (function()
{
    return {
        PropertyGroups: (function()
        {
            return {
				group1: 'guid1',
				group2: 'guid2',
				group3: 'guid3',
				group4: 'guid4',
				group5: 'guid5'
            };
        })()        
    };
})();

Czy w tym przypadku istnieje jakaś korzyść z wykorzystania dwóch immediate function invotation? Czy nie było by tak samo jeżeli kod wyżej został zapisany w ten sposób?

Dictionaries =
{
    PropertyGroups: 
        {
            group1: 'guid1',
            group2: 'guid2',
			group3: 'guid3',
			group4: 'guid4',
			group5: 'guid5'
		}
};
0

Wg mnie to jest to samo, nie widzę też sensu stosowania anonimowych funkcji, które tylko zwracają dane i nic więcej z nimi nie robią. Swoją drogą ten kod można jeszcze bardziej uprościć :)

0

Otóż w pracy znalazłem taki kawałek kodu:

Jak będziesz miał podobny WTF to:

  1. popatrz w historię Gita jak powstał ten kawałek kodu, to wygląda jak pozostałość po czymś (tutaj możliwe, że kiedyś ktoś jakieś parametry przekazywał do tej funkcji, albo było to przekopiowane z innego miejsca, w którym miało to sens itp.)
  2. skonsultuj się z zespołem, może dany kawałek kodu jest już niepotrzebny i zespół to potwierdzi (ale może się okazać też, że z jakiegoś powodu to coś robi i jest potrzebne. Tj. nie mówię o tym kawałku co wrzuciłeś, tylko ogólnie, w przypadku kodów, które wydaje się, że nic nie robią).
  3. jeśli się okaże, że jest niepotrzebny, no to wypadałoby, żebyś go posprzątał i wrzucił commit z poprawionym kodem do repo.
0

@Maciej Cąderek:
Może i się myle - ale można by to było ogarnąć tak (kodu tyle samo, ale w razie zwiększenia ilości grup i guid'ów na 100 - zmieniamy to w jednym miejscu. Oczywiście że istnieje taka zależność że numer grupy odpowiada numerowi guid

Dictionaries =
    {
        PropertyGroups: function() {
            data = {};
            for (var i = 1; i <= 5; ++i) {
                data['group' + i] = 'guid' + i;
            }
            return data;
        }()
    };

Powstaje jeszcze pytanie czy takie rozwiązanie nie jest gorsze wydajnościowo od zadeklarowania kluczy/wartości bez użycia pętli.

0
axelbest napisał(a):

@Maciej Cąderek:
Może i się myle - ale można by to było ogarnąć tak (kodu tyle samo, ale w razie zwiększenia ilości grup i guid'ów na 100 - zmieniamy to w jednym miejscu. Oczywiście że istnieje taka zależność że numer grupy odpowiada numerowi guid

Dictionaries =
    {
        PropertyGroups: function() {
            data = {};
            for (var i = 1; i <= 5; ++i) {
                data['group' + i] = 'guid' + i;
            }
            return data;
        }()
    };

Powstaje jeszcze pytanie czy takie rozwiązanie nie jest gorsze wydajnościowo od zadeklarowania kluczy/wartości bez użycia pętli.

Ajj, zapomniałem wspomnieć że dane tutaj przedstawione zanonimizowałem żeby nie było że coś z firmy rozpowszechniam ;). Normalnie w kodzie tych grup jest więcej i są prawdziwe biznesowe nazwy i ich guidy.

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