Nazywanie zmiennych w lambdach

Posted on Updated on

Czasem się zastanawiam czy zmienne wewnątrz lambd powinny by pisane pełną nazwą czy raczej skracane. Dla porównania dwa poniższe kody:

Mapper.CreateMap<User, UserModel>()
    .MapProperty(target => target.City, source => source.Address.City)
    .MapProperty(target => target.PostalCode, source => source.Address.CityPostalCode);
Mapper.CreateMap<User, UserModel>()
    .MapProperty(x => x.City, src => src.Address.City)
    .MapProperty(x => x.PostalCode, src => src.Address.CityPostalCode);

Jest powszechnie wiadomo że nazwy zmiennych powinny być opisowe, nieskrótowe i nie powinny pozostawiać wątpliwości co do znaczenia w danym kontekście. To wszystko prawda. Zrobiłbym jednak jeden wyjątek.

W przypadku lambd forma skrócona jest lepsza, ponieważ nie chcemy aż tak skupiać się na zmiennej. Chcemy żeby była krótka (x, src) właśnie dlatego żeby nie zastanawiać się za bardzo co ona robi. Myślę o krótkich (jednolinijkowych) lambdach.

Dodatkowym atutem przemawiającym za stosowaniem niednoliterowych zmiennych jest, że w kilkulinijkowych lambdach możemy od razu rozpoznać, która zmienna jest parametrem metody anonimowej stworzonej przez lambdę, a która zmienną zadeklarowaną wewnątrz lambdy lub spoza lambdy (closure).

Advertisements

One thought on “Nazywanie zmiennych w lambdach

    […] Podoba mi się konwencja aby nazyw zmiennych w lambdach nazywać ‘x’, jeśli potrzeba kolejnej ‘y’, a jeśli kolejnej (nie zdażyło mi się, pewnie mało widziałem, młody jestem ;)) to ‘z’. Poniżej na przykładach. Gdy jednak uważasz że trzeba je nazwać bardziej opisowo to odsyłam do Nazywanie zmiennych w lambdach. […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s