Facebook - konwersja
  • promocja

Czysty kod w C#. Techniki refaktoryzacji i najlepsze praktyki - ebook

Wydawnictwo:
Tłumacz:
Data wydania:
29 czerwca 2021
Format ebooka:
MOBI
Format MOBI
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najczęściej wybieranych formatów wśród czytelników e-booków. Możesz go odczytać na czytniku Kindle oraz na smartfonach i tabletach po zainstalowaniu specjalnej aplikacji. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, PDF
Format PDF
czytaj
na laptopie
czytaj
na tablecie
Format e-booków, który możesz odczytywać na tablecie oraz laptopie. Pliki PDF są odczytywane również przez czytniki i smartfony, jednakze względu na komfort czytania i brak możliwości skalowania czcionki, czytanie plików PDF na tych urządzeniach może być męczące dla oczu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, EPUB
Format EPUB
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najpopularniejszych formatów e-booków na świecie. Niezwykle wygodny i przyjazny czytelnikom - w przeciwieństwie do formatu PDF umożliwia skalowanie czcionki, dzięki czemu możliwe jest dopasowanie jej wielkości do kroju i rozmiarów ekranu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
(3w1)
Multiformat
E-booki sprzedawane w księgarni Virtualo.pl dostępne są w opcji multiformatu - kupujesz treść, nie format. Po dodaniu e-booka do koszyka i dokonaniu płatności, e-book pojawi się na Twoim koncie w Mojej Bibliotece we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu przy okładce. Uwaga: audiobooki nie są objęte opcją multiformatu.
czytaj
na laptopie
Pliki PDF zabezpieczone watermarkiem możesz odczytać na dowolnym laptopie po zainstalowaniu czytnika dokumentów PDF. Najpowszechniejszym programem, który umożliwi odczytanie pliku PDF na laptopie, jest Adobe Reader. W zależności od potrzeb, możesz zainstalować również inny program - e-booki PDF pod względem sposobu odczytywania nie różnią niczym od powszechnie stosowanych dokumentów PDF, które odczytujemy każdego dnia.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na tablecie
Aby odczytywać e-booki na swoim tablecie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. Bluefire dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na czytniku
Czytanie na e-czytniku z ekranem e-ink jest bardzo wygodne i nie męczy wzroku. Pliki przystosowane do odczytywania na czytnikach to przede wszystkim EPUB (ten format możesz odczytać m.in. na czytnikach PocketBook) i MOBI (ten fromat możesz odczytać m.in. na czytnikach Kindle).
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na smartfonie
Aby odczytywać e-booki na swoim smartfonie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. iBooks dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.

Czysty kod w C#. Techniki refaktoryzacji i najlepsze praktyki - ebook

Język C# cechują dojrzałość, prostota i nowoczesność. Służy on do wielu celów: do tworzenia aplikacji sieciowych, aplikacji działających w chmurze, oprogramowania dla urządzeń mobilnych i internetu rzeczy. Choć pozwala na pisanie kodu bezpiecznego, przejrzystego, wydajnego i prostego w konserwacji, zdarzają się przypadki, gdy jest on tak fatalnej jakości, że uzyskanie właściwej skalowalności i wydajności oprogramowania staje się niemożliwe. W takim wypadku trzeba zidentyfikować i rozwiązać problemy występujące w kodzie. Nie jest to łatwe zadanie.

Dzięki tej książce zrozumiesz znaczenie standardów kodowania, zasad i metodologii. Dowiesz się, czemu służą przeglądy kodu oraz jak przyczyniają się do jego poprawiania oraz zapewnienia zgodności z uznanymi standardami. Opisano tu także testy jednostkowe, zagadnienia związane z techniką TDD oraz rozwiązywaniem zadań przekrojowych. Zaprezentowano dobre praktyki programowania obiektów, struktur danych, obsługiwania wyjątków oraz innych aspektów pisania programów w języku C#. Poszczególne zagadnienia zilustrowano licznymi przykładami działającego kodu C# oraz wyczerpującymi wyjaśnieniami w postaci procedur krok po kroku.

W książce między innymi:

  • dobre praktyki pisania kodu w C#
  • implementacja metodologii fail-pass-refactor dla kodu w C#
  • wzorce projektowe i ich stosowanie
  • rozpoznawanie kodu złej jakości
  • zabezpieczanie interfejsów API i usługa Azure Key Vault
  • wykorzystywanie narzędzi do profilowania i refaktoryzacji

C#. Sekret sukcesu tkwi w czystym i najbardziej przejrzystym kodzie

Spis treści


O autorze 13

O recenzencie 15

Przedmowa 17

Rozdział 1. Standardy i zasady kodowania w języku C# 23

  • Wymagania techniczne 24
  • Dobry kod kontra zły kod 24
    • Zły kod 25
    • Dobry kod 39
  • Potrzeba stosowania standardów kodowania, zasad i metodologii 44
    • Standardy kodowania 44
    • Zasady kodowania 45
    • Metodologie kodowania 45
    • Konwencje kodowania 46
    • Modułowość 46
    • KISS 47
    • YAGNI 47
    • DRY 48
    • SOLID 48
    • Brzytwa Ockhama 49
  • Podsumowanie 49
  • Pytania 50
  • Dalsza lektura 50

Rozdział 2. Przeglądy kodu - procedura i znaczenie 51

  • Procedura przeglądu kodu 52
  • Przygotowanie kodu do przeglądu 52
  • Kierowanie przeglądem kodu 54
    • Wydawanie żądania ściągnięcia 55
    • Odpowiadanie na żądanie ściągnięcia 58
    • Wpływ komentarzy udzielanych podczas przeglądu kodu na programistów przekazujących kod do przeglądu 59
  • Co należy przejrzeć? 62
    • Obowiązujące w firmie wytyczne dotyczące kodowania oraz wymagania biznesowe 62
    • Konwencje nazewnictwa 63
    • Formatowanie 63
    • Testowanie 64
    • Wytyczne dotyczące architektury i wzorce projektowe 65
    • Wydajność i bezpieczeństwo 66
  • Kiedy przesłać kod do przeglądu? 67
  • Komentowanie przeglądanego kodu i udzielanie odpowiedzi na uwagi 68
    • Komentowanie recenzowanego kodu 69
    • Odpowiadanie na komentarze recenzenta 70
  • Podsumowanie 71
  • Pytania 71
  • Dalsza lektura 72

Rozdział 3. Klasy, obiekty i struktury danych 73

  • Wymagania techniczne 74
  • Organizowanie klas 74
  • Klasa powinna mieć tylko jedną odpowiedzialność 76
  • Wprowadzanie w klasach komentarzy w celu generowania dokumentacji 78
  • Spójność i sprzężenia 81
    • Przykład ścisłego sprzężenia 81
    • Przykład luźnego sprzężenia 82
    • Przykład kodu o niskiej spójności 84
    • Przykład kodu o wysokiej spójności 84
  • Projektowanie z myślą o zmianach 85
    • Programowanie na bazie interfejsów 86
    • Wstrzykiwanie zależności i odwracanie sterowania 88
    • Przykład mechanizmu DI 89
    • Przykład IoC 91
  • Prawo Demeter 92
    • Przykłady stosowania i łamania prawa Demeter 92
  • Niemutowalne obiekty i struktury danych 94
    • Przykład niemutowalnego typu 94
  • Obiekty powinny ukrywać dane i eksponować metody 95
    • Przykład hermetyzacji 96
  • Struktury danych powinny eksponować dane i nie powinny mieć metod 96
    • Przykład struktury danych 97
  • Podsumowanie 97
  • Pytania 98
  • Dalsza lektura 99

Rozdział 4. Pisanie czystych funkcji 101

  • Podstawy programowania funkcyjnego 102
  • Pisanie krótkich metod 105
    • Wcięcia w kodzie 107
  • Unikanie powielania kodu 108
  • Unikanie zbyt dużej liczby parametrów 109
    • Implementacja reguły SRP 110
  • Podsumowanie 115
  • Pytania 115
  • Dalsza lektura 116

Rozdział 5. Obsługa wyjątków 117

  • Wyjątki sprawdzane i niesprawdzane 118
  • Unikanie wyjątków NullReferenceException 121
  • Wyjątki dotyczące reguł biznesowych 124
    • Przykład 1. - obsługa warunków za pomocą wyjątków opisujących reguły biznesowe 127
    • Przykład 2. - obsługa warunków z wykorzystaniem normalnego przepływu programu 128
  • Przekazywanie sensownych informacji za pomocą wyjątków 130
  • Budowanie niestandardowych wyjątków 131
  • Podsumowanie 134
  • Pytania 134
  • Dalsza lektura 135

Rozdział 6. Testy jednostkowe 137

  • Wymagania techniczne 138
  • Znaczenie dobrego testu 138
  • Narzędzia testowe 143
    • MSTest 144
    • NUnit 151
    • Moq 157
  • SpecFlow 162
  • Praktyka metodologii TDD - test nie przechodzi, test przechodzi i refaktoryzacja 166
  • Usuwanie nadmiarowych testów, komentarzy i martwego kodu 172
  • Podsumowanie 173
  • Pytania 174
  • Dalsza lektura 174

Rozdział 7. Testowanie systemu "od końca do końca" 175

  • Testowanie E2E 175
    • Moduł logowania (podsystem) 177
    • Moduł administratora (podsystem) 180
    • Moduł sprawdzianów (podsystem) 182
    • Testowanie E2E trójmodułowego systemu 183
  • Fabryki 186
  • Wstrzykiwanie zależności 193
  • Modularyzacja 198
  • Podsumowanie 200
  • Pytania 201
  • Dalsza lektura 201

Rozdział 8. Wątki i współbieżność 203

  • Cykl życia wątku 204
  • Dodawanie parametrów wątku 205
  • Korzystanie z puli wątków 207
    • Biblioteka TPL 207
    • ThreadPool.QueueUserWorkItem() 210
  • Korzystanie z muteksów dla wątków synchronicznych 210
  • Praca z wątkami równoległymi z wykorzystaniem semaforów 212
  • Ograniczanie liczby procesorów i wątków w puli wątków 215
  • Zapobieganie zakleszczeniom 216
    • Przykład zakleszczenia 217
  • Zapobieganie wyścigom 221
  • Statyczne konstruktory i metody 224
    • Dodawanie statycznych konstruktorów do kodu 225
    • Dodawanie metod statycznych 226
  • Mutowalność, niemutowalność i bezpieczeństwo wątków 229
    • Pisanie kodu, który jest mutowalny, ale nie jest bezpieczny w kontekście wątków 230
    • Pisanie kodu, który jest niemutowalny i bezpieczny w kontekście wątków 232
    • Bezpieczeństwo wątków 233
  • Zależności metod zsynchronizowanych 237
  • Korzystanie z klasy Interlocked 238
  • Ogólne zalecenia 241
  • Podsumowanie 242
  • Pytania 243
  • Dalsza lektura 243

Rozdział 9. Projektowanie i tworzenie API 245

  • Wymagania techniczne 246
  • Czym jest API? 246
  • Proxy interfejsów API 248
  • Wytyczne projektowe dla interfejsów API 249
    • Dobrze zdefiniowane granice oprogramowania 252
    • Znaczenie dobrej jakości dokumentacji interfejsu API 255
    • Przekazywanie niemutowalnych struktur zamiast mutowalnych obiektów 257
    • Testowanie zewnętrznych API 260
    • Testowanie własnych API 261
  • Projektowanie API za pomocą RAML 264
    • Instalacja oprogramowania Atom i API Workbench firmy MuleSoft 264
    • Tworzenie projektu 265
    • Generowanie API w języku C# na podstawie niezależnej od języka specyfikacji w języku RAML 268
  • Podsumowanie 272
  • Pytania 272
  • Dalsza lektura 273

Rozdział 10. Zabezpieczanie API za pomocą kluczy API i usługi Azure Key Vault 275

  • Wymagania techniczne 276
  • Projekt API - kalendarz dywidend 276
  • Dostęp do Morningstar API 277
    • Przechowywanie klucza Morningstar API w Azure Key Vault 278
  • Tworzenie w Azure aplikacji webowej ASP.NET Core kalendarza dywidend 280
    • Publikowanie aplikacji webowej 281
  • Korzystanie z klucza API do zabezpieczenia interfejsu API kalendarza dywidend 286
    • Konfigurowanie repozytorium 286
    • Konfiguracja uwierzytelniania i autoryzacji 288
  • Testowanie zabezpieczeń z wykorzystaniem klucza API 295
  • Dodanie kodu kalendarza dywidend 297
  • Ustawianie przepustowości interfejsu API 304
  • Podsumowanie 308
  • Pytania 308
  • Dalsza lektura 309

Rozdział 11. Rozwiązywanie problemów przekrojowych 311

  • Wymagania techniczne 312
  • Wzorzec projektowy Dekorator 312
  • Wzorzec projektowy Proxy 315
  • AOP z wykorzystaniem PostSharp 317
    • Rozszerzanie frameworka aspektów 318
    • Rozszerzanie frameworka architektury 320
  • Biblioteka wielokrotnego użytku do obsługi przekrojowych problemów w projekcie 321
    • Buforowanie 321
    • Rejestrowanie w plikach 323
    • Logowanie 324
    • Obsługa wyjątków 325
    • Zabezpieczenia 326
    • Walidacja parametrów 329
    • Obsługa transakcji 334
    • Obsługa puli zasobów 334
    • Obsługa ustawień konfiguracji 335
    • Oprzyrządowanie 336
  • Podsumowanie 336
  • Pytania 337
  • Dalsza lektura 337

Rozdział 12. Narzędzia do poprawy jakości kodu 339

  • Wymagania techniczne 340
  • Definicja dobrej jakości kodu 340
  • Porządkowanie kodu i obliczanie jego metryk 342
  • Wykonywanie analizy kodu 345
  • Korzystanie z narzędzia Quick Action 347
  • Korzystanie z narzędzia JetBrains dotTrace 348
  • Korzystanie z narzędzia JetBrains ReSharper 352
  • Korzystanie z narzędzia Telerik JustDecompile 361
  • Podsumowanie 362
  • Pytania 363
  • Dalsza lektura 363

Rozdział 13. Refaktoryzacja kodu C# - identyfikacja zapachów kodu 365

  • Wymagania techniczne 366
  • Zapachy kodu na poziomie aplikacji 366
    • Ślepota danych typu Boolean 366
    • Eksplozja kombinatoryczna 368
    • Wymyślna złożoność 369
    • Kępy danych 370
    • Komentarze-dezodoranty 370
    • Powielony kod 370
    • Utracony zamiar 371
    • Mutacje zmiennych 371
    • Rozwiązanie-dziwak 373
    • Chirurgia strzelby 375
    • Rozrzucanie rozwiązań 377
    • Niekontrolowane skutki uboczne 377
  • Zapachy kodu na poziomie klasy 378
    • Złożoność cyklomatyczna 378
    • Rozbieżna zmiana 382
    • Rzutowanie w dół 382
    • Nadmierne używanie literałów 382
    • Zazdrość o kod 383
    • Nieodpowiednia intymność 384
    • Nieprzyzwoite obnażanie 384
    • Rozbudowana klasa (obiekt-Bóg) 385
    • Klasa leniwa 385
    • Klasa-pośrednik 386
    • Klasa osierocona złożona z samych zmiennych i stałych 386
    • Obsesja na punkcie prymitywów 386
    • Odrzucony spadek 386
    • Spekulatywna ogólność 387
    • Stwierdzaj, nie pytaj 387
    • Tymczasowe pola 387
  • Zapachy na poziomie metod 387
    • Metoda "czarna owca" 387
    • Złożoność cyklomatyczna 388
    • Wymyślna złożoność 388
    • Martwy kod 388
    • Zbyt duża ilość zwracanych danych 388
    • Zazdrość o kod 388
    • Rozmiar identyfikatora 389
    • Nieodpowiednia intymność 389
    • Długie wiersze kodu (wiersze-Bogowie) 389
    • Leniwe metody 389
    • Długie metody (metody-Bogowie) 389
    • Długa lista parametrów 390
    • Łańcuchy komunikatów 390
    • Metoda-pośrednik 390
    • Rozwiązanie-dziwak 390
    • Spekulatywna ogólność 390
  • Podsumowanie 391
  • Pytania 391
  • Dalsza lektura 393

Rozdział 14. Refaktoryzacja kodu C# - Implementacja wzorców projektowych 395

  • Wymagania techniczne 396
  • Implementacja kreacyjnych wzorców projektowych 396
    • Implementacja wzorca Singleton 397
    • Implementacja wzorca Metoda wytwórcza 398
    • Implementacja wzorca projektowego Fabryka abstrakcyjna 399
    • Implementacja wzorca Prototyp 402
    • Implementacja wzorca projektowego Budowniczy 404
  • Implementacja strukturalnych wzorców projektowych 409
    • Implementacja wzorca projektowego Most 410
    • Implementacja wzorca Kompozyt 412
    • Implementacja wzorca projektowego Fasada 414
    • Implementacja wzorca projektowego Pyłek 416
  • Przegląd behawioralnych wzorców projektowych 419
  • Końcowe wnioski 420
  • Podsumowanie 422
  • Pytania 423
  • Dalsza lektura 423

Odpowiedzi 425

Kategoria: Programowanie
Zabezpieczenie: Watermark
Watermark
Watermarkowanie polega na znakowaniu plików wewnątrz treści, dzięki czemu możliwe jest rozpoznanie unikatowej licencji transakcyjnej Użytkownika. E-książki zabezpieczone watermarkiem można odczytywać na wszystkich urządzeniach odtwarzających wybrany format (czytniki, tablety, smartfony). Nie ma również ograniczeń liczby licencji oraz istnieje możliwość swobodnego przenoszenia plików między urządzeniami. Pliki z watermarkiem są kompatybilne z popularnymi programami do odczytywania ebooków, jak np. Calibre oraz aplikacjami na urządzenia mobilne na takie platformy jak iOS oraz Android.
ISBN: 978-83-283-7726-4
Rozmiar pliku: 10 MB

BESTSELLERY

Kategorie: