Month: October 2015

Brake All – czyli który aktualnie kod się wykonuje

Posted on

Sposobem na debugowanie jest ustawienie brakepointów i czekanie. Czasem jednak się pospieszyliśmy, wcisnęliśmy F5 i już nie wiadomo gdzie jesteśmy. Coś się pod spodem dzieje, może na jakimś Sleepie, Wait’ie, czeka procesor. Rozwiązaniem jest taki mały przycisk Brake All, którego dotychczas nie używałem.

Brake All visual studio

Advertisements

Zbyt długie linie – jak łamać?

Posted on

Tak może wyglądać automatyczne podzielenie linii przez R# gdy nie mieści mu się w zadanym limicie.

var applicationForm =
    _applicationFormService.GetApplicationForm(
        applicationState.GetFieldValueAsString(Furi.ReferenceNumber));

Co można zrobić z takim potworkiem?

Na przykład coś takiego:

var referenceNumber = applicationState.GetFieldValueAsString(Furi.ReferenceNumber);
var applicationForm = _applicationFormService.GetApplicationForm(referenceNumber);

Wiem, że może to wyglądać na małe oszustwo bo wprowadziliśmy dodatkową zmienną. To jednak nic złego. W ten sposób warto poprawiać kod.

Kod zagwozdka #2

Posted on Updated on

Kawałem kodu wykorzystywany podczas generycznej enkrypcji/dykrypcji bazy danych.

private const string DatabaseDateTimeFormat = "yyyy-MM-dd hh:mm:ss";

// ...
void Foo()
{
    // ...
    var conversions = new Dictionary<Type, Func<object, string>>
    {
        {typeof (string), x => x},
        {typeof (int), x => x.ToString()},
        {typeof (long), x => x.ToString()},
        {typeof (decimal), x => x.ToString()},
        {typeof (DateTime), x => ((DateTime) x).ToString(DatabaseDateTimeFormat)}
        // ...
    };
    // ...
}

Co jest nie tak z tym kodem? Chodzi o dwie rzeczy. Konkretne, które mogą coś wywalić, tym razem nie chodzi o nazewnictwo.

Przykładowe makra vs vim

Posted on Updated on

Makro rozrzucające argumenty metody do nowych linii. (Jako że szukamy ‘, ‘ to zadziała nawet gdy jesteśmy w miejscu gdzie właśnie utworzyliśmy ‘private readonly IService _service’ i inicjalizujemy z konstruktowa.)

0/, <ENTER>ls<ENTER><ESC>
pod literka ‘c’ jako ‘ctor’.

Z jakiegoś powodu ‘(‘ i ‘)’ nie sa widoczne w moich makrach lub zle sie wstawiaja. Any idea?

Add detailed logging to Debug

Sytuacja przed:

var destinationType = _typeMapperService.GetByteArrayBasedType(sourceType);

Sytuacja po:

var destinationType = _typeMapperService.GetByteArrayBasedType(sourceType);

Debug.WriteLine("destinationType '{0}", destinationType.FullName);

Source Tree – różne

Posted on Updated on

Ustawienia przy których najlepiej orientuję się w historii to:

source tree settings

  • All Branches – jeśli mamy lokalne branche to pewnie stworzone w jakimś celu dla aktualnego developmentu i raczej chcemy je widzieć.
  • Odznaczone Show Remote Branches – nie bardzo interesuje mnie co robi każda osoba z teamu, jeśli jest potrzeba to jest na Code Review i przegląda się w toolu do tego stworzonym (np Code Review na BitBuckecie).
  • Ancestor Order – kolejność pokazywania historii. Druga do wyboru to Date Order i na pewno nie jest to to co mnie interesuje. Poniżej przykład jak wygląda historia w jednym i drugim przypadku.
  • Ancestor Order (przejrzyściej):source tree ancestor order
    Date Order:source tree date order

git rebase – jak nic nie popsuć

Posted on

Nie da się nic popsuć – każda zabawa z git rebase jest odwracalna (link do xxx, co zawsze zostaje w gicie).

git-rebase

Sytuacja: jesteśmy na branchu mywork (nasza praca C5 i C6). Na branchu origin najnowszy kod od innych developerow i chcemy nasze commity nałożyć na tamten kod.

git checkout mywork

git rebase origin

W tym momencie wywaliło komunikatem o konfliktach, które niestety źle roziązaliśmy i chcemy zacząć cały process od nowa.

git rebase --abort

to jest ta komenda która ustawi nas w miejscu gdzie byliśmy przed rozpoczęciem rebase. Ostatnio po prezentacji dostałem pytanie, że “rebase jest mniej bezpieczny bo do naszego brancha lądują obce commity na które dopiero nakładamy nasze i jak coś się zepsuje to trudniej będzie z tego wrócić niż merge’a”. Okazuje się że nie i komenta git rebase –abort załatwia wszystko. To jest takie proste 🙂