reklama - zainteresowany?

Refaktoryzacja w C#. Jak zredukowa - Helion

Refaktoryzacja w C#. Jak zredukowa
ebook
Autor: Matt Eland
Tytuł oryginału: Refactoring with C#: Safely improve .NET applications and pay down technical debt with Visual Studio, .NET 8, and C# 12
ISBN: 978-83-289-1692-0
stron: 408, Format: ebook
Data wydania: 2024-12-01
Księgarnia: Helion

Cena książki: 64,35 zł (poprzednio: 99,00 zł)
Oszczędzasz: 35% (-34,65 zł)

Nakład wyczerpany

Tagi: .NET - Programowanie | C# - Programowanie | Visual Studio - Programowanie

Termin d

Spis treści

Refaktoryzacja w C#. Jak zredukować dług techniczny i optymalizować kod z Visual Studio, .NET 8 i C# 12 eBook -- spis treści

O autorze

O recenzentach

Przedmowa

Wstęp

CZĘŚĆ 1. Refaktoryzacja w C# w Visual Studio

  • Rozdział 1. Dług techniczny, zapaszki kodu i refaktoryzacja
    • Dług techniczny i stary kod
      • Skąd się bierze dług techniczny
    • Identyfikacja zapaszków kodu
    • Wprowadzenie do refaktoryzacji
      • Narzędzia do refaktoryzacji w Visual Studio
    • Studium przypadku - linie lotnicze Cloudy Skies
    • Podsumowanie
    • Pytania
    • Dalsza lektura
  • Rozdział 2. Wprowadzenie do refaktoryzacji
    • Wymagania techniczne
    • Refaktoryzacja kalkulatora cen bagażu
      • Konwersja własności na własności automatyczne
      • Wprowadzanie zmiennych lokalnych
      • Wprowadzanie stałych
      • Wprowadzanie parametrów
      • Usuwanie nieużywanego i nieosiągalnego kodu
      • Wyodrębnianie metod
      • Ręczna refaktoryzacja
      • Testowanie kodu po refaktoryzacji
    • Refaktoryzacja w innych edytorach
      • Refaktoryzacja w Visual Studio Code z dodatkiem C# Dev Kit
      • Refaktoryzacja w środowisku JetBrains Rider
      • Refaktoryzacja w Visual Studio z dodatkiem ReSharper
    • Podsumowanie
    • Pytania
    • Dalsza lektura
  • Rozdział 3. Refaktoryzacja przepływu sterowania i iteracji
    • Wymagania techniczne
    • Refaktoryzacja aplikacji do obsługi przyjmowania na pokład
    • Kontrola przepływu sterowania
      • Odwracanie instrukcji if
      • Opuszczanie instrukcji else po instrukcjach return
      • Restrukturyzacja instrukcji if
      • Operator trójargumentowy
      • Zamiana instrukcji if na instrukcje switch
      • Konwersja na wyrażenia switch
    • Tworzenie obiektów
      • Zamiana var na konkretne określenia typów
      • Prostsze tworzenie przy użyciu słowa kluczowego new z określeniem typu docelowego
      • Inicjalizatory obiektów
    • Iterowanie kolekcji
      • Pętla foreach
      • Konwersja na pętlę for
      • Konwersja na LINQ
    • Refaktoryzacja instrukcji LINQ
      • Wybór odpowiedniej metody LINQ
      • Łączenie metod LINQ
      • Przekształcanie przy użyciu metody Select
    • Przegląd i testowanie kodu po refaktoryzacji
    • Podsumowanie
    • Pytania
    • Dalsza lektura
  • Rozdział 4. Refaktoryzacja na poziomie metod
    • Wymagania techniczne
    • Refaktoryzacja rejestratora lotów
    • Refaktoryzacja metod
      • Zmiana modyfikatorów dostępu do metod
      • Zmienianie nazw metod i parametrów
      • Przeciążanie metod
      • Łańcuchy wywołań metod
    • Refaktoryzacja konstruktorów
      • Generowanie konstruktorów
      • Łańcuchy konstruktorów
    • Refaktoryzacja parametrów
      • Zmiana kolejności parametrów
      • Dodawanie parametrów
      • Wprowadzanie parametrów opcjonalnych
      • Usuwanie parametrów
    • Refaktoryzacja do funkcji
      • Składowe z wyrażeniem w treści
      • Przekazywanie funkcji jako parametrów z akcjami
      • Zwracanie danych z akcji przy użyciu struktur typu Func
    • Wprowadzanie metod statycznych i rozszerzających
      • Tworzenie statycznych metod
      • Przenoszenie statycznych składowych do innych typów
      • Tworzenie metod rozszerzających
    • Przegląd i testowanie kodu po refaktoryzacji
    • Podsumowanie
    • Pytania
    • Dalsza lektura
  • Rozdział 5. Refaktoryzacja kodu obiektowego
    • Wymagania techniczne
    • Refaktoryzacja systemu wyszukiwania lotów
    • Organizowanie klas przez refaktoryzację
      • Przenoszenie klas do osobnych plików
      • Zmienianie nazw plików i klas
      • Zmiana przestrzeni nazw
      • Unikanie klas częściowych i regionów
    • Refaktoryzacja i dziedziczenie
      • Przesłanianie metody ToString
      • Generowanie metod równości
      • Wyodrębnianie klasy bazowej
      • Przenoszenie implementacji interfejsów w górę drzewa dziedziczenia
    • Kontrolowanie dziedziczenia za pomocą słowa kluczowego abstract
      • Wyrażanie intencji za pomocą słowa kluczowego abstract
      • Wprowadzanie składowych abstrakcyjnych
      • Konwersja metod abstrakcyjnych na wirtualne
    • Poprawianie hermetyzacji
      • Hermetyzacja pól
      • Pakowanie parametrów do klasy
      • Opakowywanie własności w klasy
      • Kompozycja zamiast dziedziczenia
    • Ulepszanie klas za pomocą interfejsów i polimorfizmu
      • Wyodrębnianie interfejsów
      • Domyślne implementacje interfejsów
      • Wprowadzanie polimorfizmu
    • Przegląd i testowanie zrefaktoryzowanego kodu
    • Podsumowanie
    • Pytania
    • Dalsza lektura

CZĘŚĆ 2. Bezpieczna refaktoryzacja

  • Rozdział 6. Testy jednostkowe
    • Wymagania techniczne
    • Testowanie i testy jednostkowe
      • Typy testów i piramida testowania
      • Testy jednostkowe
    • Testowanie kodu przy użyciu xUnit
      • Tworzenie projektu testowego xUnit
      • Łączenie projektu testów xUnit z własnym projektem
      • Pierwszy test jednostkowy
      • Wzorzec Organizacja-Akcja-Asercja
      • Testy i wyjątki
      • Dodawanie kolejnych metod testowych
    • Refaktoryzacja testów jednostkowych
      • Parametryzacja testów za pomocą atrybutów Theory i InlineData
      • Inicjalizacja kodu testów za pomocą konstruktorów i pól
      • Współdzielenie kodu przez metody
    • Inne środowiska testowe
      • Środowisko NUnit
      • Środowisko testowe MSTest
    • Myślenie w kategoriach testów
      • Włączanie testów do codziennego toku pracy
      • Izolowanie zależności
      • Dobre i złe testy
      • Uwagi na temat pokrycia kodu
    • Podsumowanie
    • Pytania
    • Dalsza lektura
  • Rozdział 7. Programowanie oparte na testach
    • Wymagania techniczne
    • Czym jest programowanie oparte na testach
    • Programowanie oparte na testach w Visual Studio
      • Ustawianie salda początkowego
      • Dodawanie kilometrów i generowanie metod
      • Wykorzystywanie kilometrów i refaktoryzacja testów
    • Kiedy stosować metodykę TDD
    • Podsumowanie
    • Pytania
    • Dalsza lektura
  • Rozdział 8. Unikanie antywzorców dzięki zasadom SOLID
    • Identyfikacja antywzorców w kodzie C#
    • Przestrzeganie zasad SOLID
      • Zasada pojedynczej odpowiedzialności
      • Zasada otwarty-zamknięty
      • Zasada zastępowania Liskov
      • Zasada segregacji interfejsów
      • Zasada odwrócenia zależności
    • Inne zasady architektoniczne
      • Zasada DRY
      • Zasada KISS
      • Wysoka spójność i niski stopień sprzężenia
    • Podsumowanie
    • Pytania
    • Dalsza lektura
  • Rozdział 9. Zaawansowane testy jednostkowe
    • Wymagania techniczne
    • Tworzenie czytelnych testów przy użyciu Shouldly
      • Instalowanie pakietu NuGet Shouldly
      • Czytelne asercje z Shouldly
      • Czytelne asercje z FluentAssertions
      • Testowanie wydajności z Shouldly
    • Generowanie danych testowych przy użyciu biblioteki Bogus
    • Imitowanie zależności za pomocą bibliotek Moq i NSubstitute
      • Dlaczego należy korzystać z bibliotek imitacyjnych
      • Tworzenie atrap obiektów przy użyciu biblioteki Moq
      • Programowanie wartości zwrotnych biblioteki Moq
      • Weryfikacja wywołań Moq
      • Tworzenie atrap przy użyciu biblioteki NSubstitute
    • Testy migawkowe z biblioteką Snapper
    • Eksperymentowanie z Scientist .NET
    • Podsumowanie
    • Pytania
    • Dalsza lektura
  • Rozdział 10. Defensywne techniki pisania kodu
    • Wymagania techniczne
    • API Cloudy Skies
    • Sprawdzanie poprawności danych wejściowych
      • Podstawowa weryfikacja poprawności danych
      • Słowo kluczowe nameof
      • Weryfikacja przy użyciu klauzul ochronnych
      • Klauzule ochronne z biblioteki GuardClauses
      • Atrybuty informacyjne
    • Ochrona przed null
      • Włączanie analizy dopuszczalności wartości null w C#
      • Operatory dopuszczalności wartości null
    • Poza granicą klas
      • Preferowanie klas niezmiennych
      • Własności wymagane i tylko do inicjalizacji
      • Konstruktory podstawowe
      • Konwertowanie klas na rekordy
      • Klonowanie obiektów przy użyciu wyrażeń with
    • Zaawansowane techniki pracy z typami
      • Dopasowywanie wzorców
      • Ograniczanie dublowania za pomocą typów generycznych
      • Tworzenie aliasów typów za pomocą dyrektywy using
    • Podsumowanie
    • Pytania
    • Dalsza lektura

CZĘŚĆ 3. Zaawansowana refaktoryzacja przy użyciu sztucznej inteligencji i analizy kodu

  • Rozdział 11. Refaktoryzacja wspomagana przez sztuczną inteligencję z GitHub Copilot
    • Wymagania techniczne
    • Wprowadzenie do GitHub Copilot
      • Model predykcyjny GitHub
      • Rozpoczynanie rozmowy z czatem GitHub Copilot
    • Rozpoczynanie pracy z GitHub Copilot w Visual Studio
      • Instalowanie i aktywacja rozszerzenia GitHub Copilot
      • Uzyskiwanie dostępu do narzędzia GitHub Copilot
      • Generowanie sugestii przez GitHub Copilot
      • Interakcja z czatem GitHub Copilot
    • Refaktoryzacja przy użyciu czatu GitHub Copilot
      • Czat GitHub Copilot jako recenzent kodu
      • Refaktoryzacja celowana przy użyciu czatu GitHub Copilot
    • Tworzenie wstępnej dokumentacji za pomocą czatu GitHub Copilot
    • Generowanie imitacji obiektów za pomocą czatu GitHub Copilot
    • Ograniczenia narzędzia GitHub Copilot
      • Prywatność danych a GitHub Copilot
      • Wątpliwości związane z kodem publicznym i narzędziem GitHub Copilot
    • Studium przypadku - linie lotnicze Cloudy Skies
    • Podsumowanie
    • Pytania
    • Dalsza lektura
  • Rozdział 12. Analiza kodu w Visual Studio
    • Wymagania techniczne
    • Obliczanie metryk kodu w Visual Studio
    • Analiza kodu w Visual Studio
      • Analiza rozwiązania przy użyciu domyślnego zestawu reguł
      • Konfigurowanie zestawów zasad analizy kodu
      • Reagowanie na reguły analizy kodu
      • Traktowanie ostrzeżeń jako błędów
    • Zaawansowane narzędzia do analizy kodu
      • Śledzenie metryk kodu za pomocą SonarCloud i SonarQube
      • Dogłębna analiza na platformie .NET za pomocą NDepend
    • Studium przypadku linii lotniczych Cloudy Skies
    • Podsumowanie
    • Pytania
    • Dalsza lektura
  • Rozdział 13. Tworzenie analizatora Roslyn
    • Wymagania techniczne
    • Analizatory Roslyn - informacje podstawowe
      • Instalowanie narzędzi do tworzenia rozszerzeń i edytora DGML
      • Wprowadzenie do wizualizatora składni
    • Tworzenie analizatora Roslyn
      • Dodawanie projektu analizatora do rozwiązania
      • Definiowanie zasady analizy kodu
      • Analizowanie symboli przez analizator Roslyn
      • Wskazówki na temat pisania analizatorów Roslyn
    • Testowanie analizatorów Roslyn za pomocą RoslynTestKit
      • Dodawanie projektu testowego analizatora Roslyn
      • Klasa AnalyzerTestFixture
      • Sprawdzanie, czy analizator Roslyn nie oznacza poprawnego kodu
      • Sprawdzanie, czy analizator Roslyn znajduje niepoprawny kod
      • Debugowanie analizatorów Analyzers
    • Udostępnianie analizatorów jako rozszerzeń do Visual Studio
      • Tworzenie rozszerzenia Visual Studio (VSIX) dla analizatora Roslyn
    • Podsumowanie
    • Pytania
    • Dalsza lektura
  • Rozdział 14. Refaktoryzacja kodu z analizatorami Roslyn
    • Wymagania techniczne
    • Studium przypadku - linie lotnicze Cloudy Skies
    • Budowa poprawki kodu analizatora Roslyn
      • Tworzenie dostawcy poprawki kodu
      • Rejestrowanie poprawki kodu
      • Modyfikowanie dokumentu przez poprawkę kodu
    • Testowanie poprawek kodu za pomocą RoslynTestKit
    • Publikowanie analizatorów Roslyn jako pakietów NuGet
      • Wdrażanie za pomocą pakietów NuGet
      • Tworzenie pakietu NuGet
      • Wdrażanie pakietu NuGet
      • Dodawanie pakietu NuGet
      • Pakowanie dostawcy poprawki kodu jako rozszerzenia
    • Podsumowanie
    • Pytania
    • Dalsza lektura

CZĘŚĆ 4. Refaktoryzacja w firmie

  • Rozdział 15. Informowanie o długu technicznym
    • Pokonywanie barier w refaktoryzacji
      • Pilne terminy
      • "Nie ruszać kodu wysokiego ryzyka"
      • "Ten kod zniknie, nie marnuj na niego czasu"
      • Aplikacje kończące cykl życia
      • "Zrób tylko to, co jest wymagane"
      • "Refaktoryzacja nie daje wartości biznesowej"
    • Informowanie o długu technicznym
      • Dług techniczny jako ryzyko
      • Tworzenie rejestru ryzyka
      • Co zamiast rejestru ryzyka
    • Ustalanie priorytetów długu technicznego
      • Obliczanie priorytetów ryzyka za pomocą oceny ryzyka
      • Podejście oparte na przeczuciu
    • Uzyskiwanie poparcia organizacyjnego
      • Przygotowywanie się do rozmowy
      • Przewidywanie pytań i zastrzeżeń
      • Różne podejścia dla różnych liderów
      • Znaczenie komunikacji
    • Studium przypadku - linie lotnicze Cloudy Skies
    • Podsumowanie
    • Pytania
    • Dalsza lektura
  • Rozdział 16. Wdrażanie standardów kodowania
    • Wymagania techniczne
    • Czym są standardy kodowania
      • Znaczenie standardów kodowania
      • Jak standardy kodu wpływają na refaktoryzację
      • Stosowanie standardów kodowania do istniejącego kodu
    • Ustanowienie standardów kodowania
      • Zbiorowe standardy kodowania
      • Wybór tego, co ważne
      • Źródła standardów kodowania
      • Ewolucja standardów kodowania
      • Włączanie standardów do procesów
    • Formatowanie i czyszczenie kodu w Visual Studio
      • Formatowanie dokumentów
      • Automatyczne formatowanie dokumentów
      • Konfigurowanie ustawień stylu kodowania
    • Stosowanie standardów kodowania za pomocą plików EditorConfig
      • Kod początkowy do przeglądu
      • Dodawanie pliku EditorConfig
      • Dostosowywanie pliku EditorConfig
    • Podsumowanie
    • Pytania
    • Więcej informacji
  • Rozdział 17. Zwinna refaktoryzacja
    • Refaktoryzacja w zwinnym środowisku
      • Kluczowe elementy zwinnych zespołów
      • Czynniki przeszkadzające w refaktoryzacji
    • Strategie dające sukces w zwinnej refaktoryzacji
      • Zadania poświęcone refaktoryzacji
      • Refaktoryzacja kodu, który jest zmieniany
      • Sprinty refaktoryzacji
      • Urlopy refaktoryzacyjne
    • Wykonywanie refaktoryzacji na dużą skalę
      • Dlaczego duże refaktoryzacje są trudne
      • Pułapka przepisywania
      • Lekcje z okrętu Tezeusza
      • Aktualizowanie projektów za pomocą .NET Upgrade Assistant
      • Refaktoryzacja i wzorzec dusiciela
    • Odzyskiwanie sprawności, gdy refaktoryzacja pójdzie źle
      • Wpływ nieudanych refaktoryzacji
      • Zapewnienie bezpieczeństwa w zwinnych środowiskach
    • Wdrażanie refaktoryzacji na dużą skalę
      • Korzystanie z flag funkcji
      • Wdrożenia etapowe lub niebiesko-zielone
      • Wartość ciągłej integracji i ciągłego dostarczania
    • Studium przypadku - linie lotnicze Cloudy Skies
    • Podsumowanie
    • W kierunku bardziej zrównoważonego oprogramowania
    • Pytania
    • Więcej informacji

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2024 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.