reklama - zainteresowany?

Regu - Helion

Regu
Autor: Chris Zimmerman
Tytuł oryginału: The Rules of Programming: How to Write Better Code
Tłumaczenie: Piotr Rajca
ISBN: 978-83-289-0130-8
stron: 325, Format: 158x228, okładka: mi
Księgarnia: Helion

Książka będzie dostępna od lipca 2023

Tagi: Inne - Programowanie | Optymalizacja wydajno

M

Spis treści

Reguły programowania. Jak pisać lepszy kod -- spis treści

Spis treści

Wstęp

Historia reguł

Jak nie zgadzać się z przedstawionymi tu regułami

1. Tak proste, jak to możliwe, lecz nie prostsze

  • Pomiar prostoty
  • .ale nie prostszy
  • Czasami lepiej jest uprościć problem niż rozwiązanie
  • Proste algorytmy
  • Nie trać z oczu celu
  • Jedna reguła, by rządzić innymi

2. Błędy są zaraźliwe

  • Nie polegaj na swoich użytkownikach
  • Zautomatyzowane testy mogą być kłopotliwe
  • Kod bezstanowy jest łatwiejszy do testowania
  • Badaj stan, którego nie możesz wyeliminować
  • Nie ufaj kodowi wywołującemu
  • Dbanie o poprawność kodu

3. Dobra nazwa jest najlepszą dokumentacją

  • Nie optymalizuj nazw pod kątem długości
  • Nie mieszaj konwencji
  • Nie strzelaj sobie samemu w stopę
  • Nie zmuszaj mnie do myślenia

4. Uogólnianie wymaga trzech przykładów

  • YAGNI
  • Oczywisty zarzut wobec tej strategii, w odpowiedzi na który powtórzę to samo
  • Pisanie kodu na wyrost to jeszcze pół biedy.
  • Nie tak wygląda sukces

5. Pierwsza lekcja optymalizacji: nie optymalizuj

  • Pierwsza lekcja optymalizacji
  • Druga lekcja optymalizacji
  • Sprawdzanie drugiej lekcji optymalizacji
  • Stosowanie pięcioetapowego procesu optymalizacji
  • Nie ma żadnej trzeciej lekcji optymalizacji

Przerywnik, w którym poprzedni rozdział zostaje poddany krytyce

6. Przeglądy kodu są dobre z trzech powodów

  • Przeglądy kodu służą dzieleniu się wiedzą
  • Zabronione przeglądy kodu
  • Prawdziwa wartość przeglądów kodu
  • Przeglądy kodu mają społeczny charakter

7. Eliminuj przypadki niepowodzeń

  • Funkcja, która ułatwia strzał w stopę
  • Strzelanie sobie w stopę rykoszetem
  • Skorzystanie z pomocy kompilatora, by uniknąć strzelania sobie w stopę
  • Wyczucie czasu jest kluczowe
  • Bardziej skomplikowany przykład
  • Uniemożliwianie popełniania błędów związanych z kolejnością
  • Stosowanie szablonów zamiast sekwencji wywołań metod
  • Skoordynowana kontrola stanu
  • Wykrywanie błędów jest dobre, ale jeszcze lepsze jest uniemożliwienie wyrażenia ich w kodzie

8. Kod, który nie jest wykonywany, nie działa

  • Krok 1. Prosty początek
  • Krok 2. Uogólnienie częstego wzorca
  • Krok 3. Dodawanie przebrań
  • Krok 4. Przyszła kryska na Matyska
  • Kogo obwinić?
  • Ograniczenia testowania

9. Pisz kod, który można zwijać

  • Tak smakuje niepowodzenie
  • Rola pamięci krótkotrwałej
  • Gdzie narysować linię?
  • Koszt abstrakcji
  • Używaj abstrakcji, by ułatwiać zrozumienie kodu
  • Znaczenie pamięci długotrwałej
  • Wiedza powszechna jest darmowa, nowe koncepcje są kosztowne
  • Łącząc wszystko w całość

10. Gromadź złożoność w jednym miejscu

  • Prosty przykład
  • Ukrywanie szczegółów wewnętrznych
  • Rozproszony stan a złożoność
  • Zdolny do działania?
  • Widać jak przez mgłę
  • Ponowne przemyślenie podejścia
  • Złożoność w jednym miejscu - proste interakcje

11. Czy to jest dwa razy lepsze?

  • Trzy ścieżki ku przyszłości: ignoruj, ulepszaj, refaktoryzuj
  • Stopniowa ewolucja czy też ciągła rekonstrukcja
  • Prosta zasada
  • Radzenie sobie z niejasnymi korzyściami
  • Przeróbka jest dobrą okazją do rozwiązywania drobnych problemów

12. Duże zespoły wymagają silnych konwencji

  • Konwencje formatowania
  • Konwencje użycia języka
  • Konwencje rozwiązywania problemów
  • Efektywne zespoły myślą podobnie

13. Znajdź kamyk, który wywołał lawinę

  • Cykl życia błędu
  • Minimalizacja stanu
  • Radzenie sobie ze stanem, którego nie można uniknąć
  • Radzenie sobie z nieuniknionym opóźnieniem

14. Istnieją cztery rodzaje kodu

  • Łatwy problem, proste rozwiązanie
  • Łatwy problem, trzy skomplikowane rozwiązania
  • Koszt złożoności
  • Cztery (choć w zasadzie trzy) rodzaje programistów
  • Trudny problem, nieco skomplikowane rozwiązania, które nie działają
  • Trudny problem, nieco skomplikowane rozwiązanie
  • Trudny problem, łatwe rozwiązanie

15. Wyrwij chwasty

  • Identyfikacja chwastów
  • Jak w kodzie pojawiają się chwasty?

16. Kiedy rozwiązujesz problem, cofaj się i zaczynaj od wyniku, zamiast iść wprzód i wychodzić od kodu

  • Przykład
  • Pojawia się irytacja
  • Wybór jednej ze stron
  • Rozwiązuj problem, podążając wstecz
  • A teraz coś zupełnie innego
  • Praca poprzez podążanie wprzód lub wstecz

17. Czasami duży problem jest łatwiejszy do rozwiązania

  • Przeskok do wniosków
  • Znajdowanie czystej drogi do przodu
  • Rozpoznanie możliwości

18. Niech Twój kod opowie własną historię

  • Nie opowiadaj nieprawdziwych historii
  • Upewnij się, że historia będzie mieć sens
  • Opowiadanie dobrych historii

19. Przerabiaj równolegle

  • Przeszkody na drodze
  • Zamiast tego utwórz równoległy system
  • Konkretny przykład
  • Alokacja korzystająca ze stosu w praktyce
  • Chmura na horyzoncie
  • Nieco bardziej sprytne konteksty stosu
  • Przejście ze starych kontekstów stosu na nowe
  • Przygotowania do migracji do klasy StackVector
  • Czas migrować
  • Rozpoznawanie, kiedy równoległe przerabianie jest dobrą strategią

20. Wykonaj obliczenia

  • Automatyzować czy nie automatyzować?
  • Poszukaj twardych ograniczeń
  • Kiedy obliczenia się zmieniają
  • Kiedy problem obliczeń ponownie staje się problemem Worda

21. Czasami będziesz musiał po prostu wbić gwoździe

  • Nowy argument
  • To nigdy nie jest tylko jeden błąd
  • Syreni zew automatyzacji
  • Zarządzanie wielkością plików
  • Nie ma żadnych skrótów

Wniosek: działaj na własnych zasadach

  • Użyj swojego najlepszego osądu
  • Przedyskutujcie to między sobą
  • Wypisuję się

A. Czytanie kodu C++ dla programistów Pythona

B. Czytanie kodu C++ dla programistów JavaScriptu

Code, Publish & WebDesing by CATALIST.com.pl



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