Month: November 2013

Line by line

Posted on

A code

var ints = GetInts(categories, categoryId);
            
return ints.Reverse().Select(p => categories[p].Name);

Good code

var ints = GetInts(categories, categoryId);
            
ints = ints.Reverse();

return ints.Select(p => categories[p].Name);

Good in terms of readibility

Logowanie błędów (kod)

Posted on

private static readonly ILog Logger = LogManager.GetLogger("ProductImportLogger");
private static readonly ILog _logger = LogManager.GetLogger(typeof (SitePropertyContentAreaControl));
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

Dlaczego:
* korzystanie ze statycznego LogManager
* wyciąganie po nazwie – “ProductImportLogger”, albo trzy inne sposoby
* static

Autocomplete

Posted on

Implementująć autocomplete trzeba pamiętać o dwóch rzeczach:
a) Delay (lepsze słowo). Nie wysyłać requestu na event keyup. gdy ktoś szybko wpisuje “house” to nie powinno się wysyłać “h”, później “ho”, “hou”, etc. każdy nowo wpisana literka powinna kasować timer który wyśle request dopiero po sekundzie (powiedzmy) bezczynności.
b) Kolejkowanie. Wpisane zostało “house”, poszedł request o “house”, zostało skasowane trzy literki i dopisane do “hope”, Przyszedł request z “hope” a następnie spóźniony request z “house” który nadpisze odpowiedź z “hope”. Trzeba się przed tym zabezpieczyć.

Logowanie

Posted on Updated on

Ustawienia logowania mogą się zmienić na innych środowiskach gdy korzystamy z transformation.

skracanie nazw

Posted on

catch (InvalidOperationException exception)
cReference

Ten sam kod widziany różnymi oczami

Posted on

Ktoś zwraca uwagę na TODO,
Ktoś zwraca uwagę na zakomentowany kod,
Kogoś razi jedno, kogoś razi coś innego,
Ktoś częściowo programuje w http://en.wikipedia.org/wiki/Whitespace_(programming_language).
Ktoś ma filtry które robią Replace(“\n+”, “\n”). i [kod] jest tożsamy z [kod].
Enviroment.NewLine
jeśli dla kogoś nie jest to problem to … dalej już łatwo nie zwracać na nic uwagi.

Jak logować pospolite błędy

Posted on Updated on

private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

ILog – interfejs z biblioteki log4net. Uzależniamy się od log4net, nie jest to takie złe. Czasem tworzy się własne [kod]

Nie mam tutaj jednoznacznej preferencji. W drugim przypadku gubimy możliwość pobrania loggera per klasa.

Jak to Bartek zrobił, czy to nie za dużo?

Kiedy tworzyć własną klasę wyjątku

Posted on Updated on

Zazwyczaj nie potrzebujemy tworzyć nowej klasy wyjątku czyli dziedziczące po System.Exception (bezpośrednio lub pośrednio – co lepsze?). Ciągle mówię o aplikacji, która jest dla użytkownika końcowego, a nie tworzeniu frameworku.

Własny wyjątek warto stworzyć nie dla idea rzucenia czegokolwiek, żeby zasygnalizować coś złego. Jak pisałem wcześniej – pewnie odpowiedni wyjątek istnieje już w .NET. Nowe wyjątki powinniśmy tworzyć gdy dodajemy jakiś kontekst. Posłużej się produkcyjnym przykładem. Jest kontrolka która jest odpowiedzialna za przechowywanie i wyświetlanie danych. Jedną z funkcjonalności to serializowanie i deserializowanie danych aby można je było zapisać do bazy. Taka serializacja może się nie powieść z różnych powodów, na które programista nie może odpowiedzieć w kodzie. Kod:

Co się stało na której stronie na której kontrolce.

Zdażało mi się tworzyć wyjątki typu xxx gdzie najistotniejszą rzeczą było to że jest to nowy typ oraz przyjemniejszy konstruktor. Zapomniałem dodać nową property.

Czy takie wyjątek od razu logować?

Coś do nagrywania makr

Posted on

https://addons.mozilla.org/pl/firefox/addon/imacros-for-firefox/

Pewnie jak poszukasz znajdziesz tez odpowiednik dla Chroma

Uczyć się na cudzych błędach

Posted on

category.ParentID.ToString(CultureInfo.InvariantCulture)