Dane szczegółowe książki
Niezawodność oprogramowania: techniki tworzenia bezbłędnych programów w języku C - rodem z Microsoftu / Maguire, Steve; Grażyński, Andrzej
Tytuł
Niezawodność oprogramowania: techniki tworzenia bezbłędnych programów w języku C - rodem z Microsoftu
Tytuł oryginału
Writing solid code
Wydawnictwo
Gliwice: "Helion", 2002
ISBN
8371974299
Hasła przedmiotowe
Spis treści
pokaż spis treści
Przedmowa do wydania polskiego 7
Wstęp 13
Dwa najważniejsze pytania 14
Nazewnictwo 15
Rozdział 1. Hipotetyczny kompilator 19
Poznaj swój język programowania 21
Pożyteczne Narzędzie — Lint 25
To tylko kosmetyczne zmiany 25
Nigdy więcej błędów 26
Rozdział 2. Sprawdzaj samego siebie 29
Przypowieść o dwóch wersjach 30
Asercje 31
„Niezdefiniowane” oznacza „nieprzewidywalne” 34
Zagadkowe asercje 35
Kompatybilność kontrolowana 37
Gdy niemożliwe staje się możliwe 41
Nic o nas bez nas 43
Co dwa algorytmy, to nie jeden 46
Usuwaj błędy jak najwcześniej 50
Rozdział 3. Ufortyfikuj swoje podsystemy 57
Jest błąd, nie ma błędu 58
Zutylizuj swoje śmieci 60
Jestem już gdzie indziej 64
Kontroluj wykorzystanie pamięci 67
Spójrz na to, czego nie widać 70
Wybieraj rozsądnie 74
Szybki czy bezbłędny 75
Teraz lub później 75
Rozdział 4. Jak wykonuje się Twój kod 79
Uwiarygodnij swój kod 80
Przetestuj wszystkie rozgałęzienia 81
Żywotne znaczenie przepływu danych 83
Czy czegoś nie przeoczyłeś 85
Spróbuj, a polubisz 86
Rozdział 5. Niekomunikatywne interfejsy 89
getchar() zwraca liczbę, nie znak 90
realloc() a gospodarka pamięcią 92
Uniwersalny menedżer pamięci 94
Nieprecyzyjne parametry 96
Fałszywy alarm 99
Czytanie pomiędzy wierszami 101
Ostrzegaj przed niebezpieczeństwem 103
Diabeł tkwi w szczegółach 106
Rozdział 6. Ryzykowny biznes 109
int intowi nierówny 110
Nadmiar i niedomiar 114
„Projekt” czy „prawie projekt” 116
Po prostu robią, co do nich należy 118
Przecież to to samo 122
?: to także if 123
Precz z redundancją 126
Wysokie ryzyko, bez odwrotu 127
Przeklęta niespójność 131
Nie przypisuj zmiennym informacji diagnostycznych 133
Nie warto ryzykować 135
Rozdział 7. Dramaturgia rzemiosła 139
Szybkość, szybkość 140
Złodziej otwierający zamek kluczem nie przestaje być złodziejem 142
Każdemu według potrzeb 144
Nie uzewnętrzniaj prywatnych informacji 146
Funkcje-pasożyty 148
Programistyczne śrubokręty 151
Syndrom APL 153
Bez udziwnień, proszę 154
Na śmietnik z tymi wszystkimi trikami 156
Rozdział 8. Reszta jest kwestią nawyków 161
Hokus-pokus, nie ma błędu 161
Zrób dziś, co masz zrobić jutro 163
Doktora!!! 164
Jeśli działa, nie poprawiaj 165
Funkcja z wozu, koniom lżej 167
Elastyczność rodzi błędy 167
Spróbuj 169
Święty Harmonogram 170
„Tester” — nazwa w sam raz dla testera 171
Programista zawinił, testera powiesili 173
Zdefiniuj swe priorytety 174
Epilog 179
Dodatek A. Lista kontrolna kodowania 181
Dodatek B. Podprogramy zarządzania pamięcią 187
Dodatek C. Odpowiedzi 195
Wstęp 13
Dwa najważniejsze pytania 14
Nazewnictwo 15
Rozdział 1. Hipotetyczny kompilator 19
Poznaj swój język programowania 21
Pożyteczne Narzędzie — Lint 25
To tylko kosmetyczne zmiany 25
Nigdy więcej błędów 26
Rozdział 2. Sprawdzaj samego siebie 29
Przypowieść o dwóch wersjach 30
Asercje 31
„Niezdefiniowane” oznacza „nieprzewidywalne” 34
Zagadkowe asercje 35
Kompatybilność kontrolowana 37
Gdy niemożliwe staje się możliwe 41
Nic o nas bez nas 43
Co dwa algorytmy, to nie jeden 46
Usuwaj błędy jak najwcześniej 50
Rozdział 3. Ufortyfikuj swoje podsystemy 57
Jest błąd, nie ma błędu 58
Zutylizuj swoje śmieci 60
Jestem już gdzie indziej 64
Kontroluj wykorzystanie pamięci 67
Spójrz na to, czego nie widać 70
Wybieraj rozsądnie 74
Szybki czy bezbłędny 75
Teraz lub później 75
Rozdział 4. Jak wykonuje się Twój kod 79
Uwiarygodnij swój kod 80
Przetestuj wszystkie rozgałęzienia 81
Żywotne znaczenie przepływu danych 83
Czy czegoś nie przeoczyłeś 85
Spróbuj, a polubisz 86
Rozdział 5. Niekomunikatywne interfejsy 89
getchar() zwraca liczbę, nie znak 90
realloc() a gospodarka pamięcią 92
Uniwersalny menedżer pamięci 94
Nieprecyzyjne parametry 96
Fałszywy alarm 99
Czytanie pomiędzy wierszami 101
Ostrzegaj przed niebezpieczeństwem 103
Diabeł tkwi w szczegółach 106
Rozdział 6. Ryzykowny biznes 109
int intowi nierówny 110
Nadmiar i niedomiar 114
„Projekt” czy „prawie projekt” 116
Po prostu robią, co do nich należy 118
Przecież to to samo 122
?: to także if 123
Precz z redundancją 126
Wysokie ryzyko, bez odwrotu 127
Przeklęta niespójność 131
Nie przypisuj zmiennym informacji diagnostycznych 133
Nie warto ryzykować 135
Rozdział 7. Dramaturgia rzemiosła 139
Szybkość, szybkość 140
Złodziej otwierający zamek kluczem nie przestaje być złodziejem 142
Każdemu według potrzeb 144
Nie uzewnętrzniaj prywatnych informacji 146
Funkcje-pasożyty 148
Programistyczne śrubokręty 151
Syndrom APL 153
Bez udziwnień, proszę 154
Na śmietnik z tymi wszystkimi trikami 156
Rozdział 8. Reszta jest kwestią nawyków 161
Hokus-pokus, nie ma błędu 161
Zrób dziś, co masz zrobić jutro 163
Doktora!!! 164
Jeśli działa, nie poprawiaj 165
Funkcja z wozu, koniom lżej 167
Elastyczność rodzi błędy 167
Spróbuj 169
Święty Harmonogram 170
„Tester” — nazwa w sam raz dla testera 171
Programista zawinił, testera powiesili 173
Zdefiniuj swe priorytety 174
Epilog 179
Dodatek A. Lista kontrolna kodowania 181
Dodatek B. Podprogramy zarządzania pamięcią 187
Dodatek C. Odpowiedzi 195