Перфектен код 3-то издание. Перфектен код

17.12.2023

Който е написал някои от най-добрите статии за стартиращи фирми, програмиране и бизнес. Днес искам да ви разкажа за такава изключителна личност като Стив Макконъл.

Интересното е, че през 1998 г. читателите на списание Software Development разпознаха Стив като един от тримата най-влиятелни хора в индустрията за разработка на софтуер, заедно с Бил Гейтс и Линус Торвалдс.

Накратко, тогава Стивън К. Макконъл- програмист и автор на книги за разработка на софтуер.

Написал е книгите „Бързо развитие” (1996), „Ръководство за оцеляване на софтуерни проекти” (1998), „Професионално разработване на софтуер” (2004). Между другото, списание Software Development два пъти награди книгата му с наградата Jolt Excellence Award като най-добрите книгигодини за разработката на софтуер.

Между другото, вероятно сте чували фразата „Напишете код, сякаш ще бъде придружен от жесток психопат, който знае къде живеете“. Така че тази фраза се приписва точно Стив.

Перфектен код

Стив Макконъл, която горещо препоръчвате да прочетете поне веднъж в живота си. Изключително полезен материал за реална практика, който популяризира изключително здрави принципи в разработката на софтуер.
Повече от 10 години първото издание на тази книга се смяташе за едно от най-добрите практически ръководствапо програмиране. Тази книга вече е напълно актуализирана, за да отразява съвременните тенденции и технологии, със стотици нови примери, илюстриращи изкуството и науката на програмирането.

Въз основа на академични изследвания от една страна и практически опит в разработването на търговски софтуер от друга, авторът е синтезирал ясни, прагматични насоки от най-добрите техники и най-ефективните принципи.

Каквото и да е вашето ниво на умения, с каквито и инструменти за разработка да работите, каквато и да е сложността на вашия проект, тази книга ще ви даде информацията, от която се нуждаете, ще ви накара да мислите и ще ви помогне да създадете перфектен код.

Професионална разработка на софтуер

Няма да препоръчам тази книга като задължителна литература. В по-голямата си част това са мемоари и много размисли от автора. (за което се казва, че е подобен на „Дизайн и еволюция на C++“ от Stroustrup)

Интересно и лесно четиво, ако сте запалени по всичко свързано с разработката на софтуер. В противен случай е по-добре да отделите повече време за по-практични материали.

За улеснение давам и описание на книгата:

Стив Макконъл, автор на бестселъра Code Perfect и други книги и многобройни статии за разработката на софтуер, убедително показва, че разработката на софтуер може да бъде постоянно успешна чрез подобряване на самата професия на разработка на софтуер.

Той не само показва защо и как индустрията стигна до мястото, където е текущо състояние, и описва стъпките, които трябва да предприеме всеки, който иска да пренесе създаването на своя софтуер на следващото ниво.

Той също така говори за корпоративните практики, предназначени да увеличат броя на професионално завършените проекти, както и за лицензиращите организации и академичните програми като средство за повишаване на професионализма както на отделните разработчици, така и на софтуерната индустрия като цяло.

10 смъртни гряха при оценката на трудоемкостта на разработката на софтуер

Появи се на HabraHabr сравнително наскоро, което просто не мога да не спомена. А именно кратък и ясен преразказ (и превод) на едночасов уебинар от Стив Макконъл, който се проведе през юни 2009 г.

Повечето (или дори всички) от горните „смъртни грехове“ се разбират по един или друг начин от всеки адекватен разработчик, но наличието на такъв списък е много полезно - можете да го прегледате още веднъж, преди да започнете нов проект и да се предпазите от ненужни грешки . Добавяне към любими!

P.S.Така се случи (вече писах за това в

Блоков код (n, k), в който броят на коригираните грешки е еднакъв и не зависи от вида на кодовата комбинация. ср. несъвършен. [Л.М. Невдяев. Телекомуникационни технологии. английски руски тълковен речникуказател. Под редакцията на Ю.М. Горностаева...... Ръководство за технически преводач

Двоичен код на Golay- Този термин има и други значения, вижте Golay Code. Двоичният код на Golay е един от двата тясно свързани линейни кода за коригиране на грешки: перфектният двоичен код на Golay ... ... Wikipedia

Хеминг обвързан

Сферична граница на опаковката- В теорията на кодирането границата на Хеминг определя границите на възможните стойности на параметрите на произволен блоков код. Известен също като граница на сферична опаковка. Кодовете, които достигат границата на Хеминг, се наричат ​​перфектни или плътно опаковани... Уикипедия

Отстраняване на грешки в програмата- Етап на разработка на отстраняване на грешки компютърна програма, където грешките се откриват, локализират и отстраняват. За да разберете къде е възникнала грешката, трябва: да разберете текущите стойности на променливите; разберете кой път е използван... ... Wikipedia

Макконъл, Стив- Стивън С. Макконъл (3 септември 1962(19620903)) американски програмист, автор на книги за разработка софтуер. Списание Software Development два пъти награди книгата му с наградата Jolt Excellence като... ... Wikipedia

Отстраняване на грешки

Отстраняване на грешки- Отстраняването на грешки е етапът от разработването на компютърна програма, при който грешките се откриват, локализират и отстраняват. За да разберете къде е възникнала грешката, трябва: да разберете текущите стойности на променливите; и разберете по кой път е била изпълнена програмата.... ... Wikipedia

Програми за отстраняване на грешки- Отстраняването на грешки е етапът от разработването на компютърна програма, при който грешките се откриват, локализират и отстраняват. За да разберете къде е възникнала грешката, трябва: да разберете текущите стойности на променливите; и разберете по кой път е била изпълнена програмата.... ... Wikipedia

Итеративно развитие- Итеративен модел на развитие... Wikipedia

Изпитание на един господар на времето- Корица на DVD изданието на “The Trial of the Time Lord” Държава Великобритания Телевизионен канал BBC One ... Wikipedia

Книги

  • Перфектен код. Майсторски клас, Стив Макконъл. Повече от 10 години първото издание на тази книга се смяташе за едно от най-добрите практически ръководства по програмиране. Сега тази книга е напълно актуализирана, като се вземат предвид съвременните тенденции и технологии... Купете за 1308 RUR
  • Перфектен код. Master Class, McConnell Steve... 896 стр. Повече от 10 години първото издание на тази книга се смяташе за едно от най-добрите практически ръководства по програмиране. Сега тази книга е напълно актуализирана, като се вземат предвид съвременните тенденции и...
  • 1 Добре дошли в света на софтуерния дизайн!
    • 1.1. Какво е софтуерно инженерство?
    • 1.2. Защо софтуерният дизайн е толкова важен?
    • 1.3. Как се чете тази книга
  • 2 Метафори за по-добро разбиране на разработката на софтуер
    • 2.1. Значението на метафорите
    • 2.2. Как да използваме метафори?
    • 2.3. Популярни метафори, които характеризират разработката на софтуер
  • 3 Измерете два пъти, изрежете веднъж: предпоставки
    • 3.1. Важността на спазването на предпоставките
    • 3.2. Определете вида на софтуера, върху който работите
    • 3.3. Предпоставки, свързани с дефинирането на проблема
    • 3.4. Предварителни условия, свързани с разработването на изисквания
    • 3.5. Предпоставки, свързани с развитието на архитектурата
    • 3.6. Колко време трябва да се отдели за попълване на предпоставките?
  • 4 Основни решения, които трябва да се вземат по време на проектирането
    • 4.1. Избор на език за програмиране
    • 4.2. Конвенции за програмиране
    • 4.3. Вълни на развитие на технологиите
    • 4.4. Избор на основни дизайнерски техники
    • 5 Проектиране по време на строителството
      • 5.1. Проблеми с дизайна на софтуера
      • 5.2. Основни концепции за проектиране
      • 5.3. Компоненти на дизайна: Евристични принципи
      • 5.4. Методи за проектиране
      • 5.5. Коментари за популярни методики
    • 6 класове
      • 6.1. Основи на класа: абстрактни типове данни
      • 6.2. Висококачествен клас интерфейси
      • 6.3. Проблеми с дизайна и внедряването
      • 6.4. Разумни причини за създаване на класове
      • 6.5. Специфични за езика аспекти
      • 6.6. Следващо ниво: Class Packs
    • 7 висококачествени метода
      • 7.1. Разумни причини за създаване на методи
      • 7.2. Дизайн на ниво метод
      • 7.3. Добри имена на методи
      • 7.4. Колко обширен може да бъде методът?
      • 7.5. Съвети за използване на параметрите на метода
      • 7.6. Специфични съображения за използване на функции
      • 7.7. Макро методи и вградени методи
    • 8 Програмиране на сигурността
      • 8.1. Защита на програмата от некоректни входни данни
      • 8.2. Изявления
      • 8.3. Методи за обработка на грешки
      • 8.4. Изключения
      • 8.5. Изолиране на щети, причинени от грешки
      • 8.6. Инструменти за отстраняване на грешки
      • 8.7. Дял на защитното програмиране в индустриалната версия
      • 8.8. Защита срещу защитно програмиране
    • 9 Процес на програмиране на псевдокод
      • 9.1. Етапи на създаване на класове и методи
      • 9.2. Псевдокод за професионалистите
      • 9.3. Конструиране на методи с използване на PPP
      • 9.4. Алтернативи на ПЧП
    • 10 Общи принципиизползване на променливи
      • 10.1. Какво знаете за данните?
      • 10.2. Правилно деклариране на променливи
      • 10.3. Принципи на инициализация на променливи
      • 10.4. Обхват
      • 10.5. Упоритост
      • 10.6. Време за обвързване
      • 10.7. Връзка между типове данни и контролни структури
      • 10.8. Уникална цел за всяка променлива
    • 11 Силата на имената на променливите
      • 11.1. Общи принципи за избор на имена на променливи
      • 11.2. Наименуване на конкретни типове данни
      • 11.3. Силата на конвенциите за именуване
      • 11.4. Неофициални конвенции за именуване
      • 11.5. Стандартизирани префикси
      • 11.6. Интелигентно съкращение на имена на променливи
      • 11.7. Имена, които трябва да се избягват
    • 12 Основни типове данни
      • 12.1. Числа като цяло
      • 12.2. Цели числа
      • 12.3. Числа с плаваща запетая
      • 12.4. Знаци и низове
      • 12.5. Булеви променливи
      • 12.6. Типове енуми
      • 12.7. Наименувани константи
      • 12.8. Масиви
      • 12.9. Създаване на ваши собствени типове данни (псевдоними)
    • 13 Нестандартни типове данни
      • 13.1. Конструкции
      • 13.2. Указателни табели
      • 13.3. Глобални данни
    • 14 Последователна организация на кода
      • 14.1. Оператори в определен ред
      • 14.2. Оператори без определен ред
    • 15 Условни изрази
      • 15.1. ако изявления
      • 15.2. Изявления на казуси
    • 16 цикъла
      • 16.1. Избор на тип цикъл
      • 16.2. Управление на цикъла
      • 16.3. Създайте примка лесно - отвътре навън
      • 16.4. Съответствие между цикли и масиви
    • 17 Нестандартни управляващи структури
      • 17.1. Множество връщания от метод
      • 17.2. Рекурсия
      • 17.3. изявление goto
      • 17.4. Перспективи за нестандартни структури за управление
    • 18 Таблични методи
      • 18.1. Основни въпроси на използването на таблични методи
      • 18.2. Маси с директен достъп
      • 18.3. Индексирани таблици за достъп
      • 18.4. Таблици за стъпаловиден достъп
      • 18.5. Други примери за търсене в таблица
    • 19 Общи въпроси на управлението
      • 19.1. Булеви изрази
      • 19.2. Съставни изрази (блокове)
      • 19.3. Празни изрази
      • 19.4. Укротяване на опасно дълбоко гнездене
      • 19.5. Основи на програмирането: Структурно програмиране
      • 19.6. Контролни структури и сложност
    • 20 Качество на софтуера
      • 20.1. Качествени характеристики на софтуера
      • 20.2. Методи за подобряване на качеството на софтуера
      • 20.3. Относителна ефективност на техниките за контрол на качеството на софтуера
      • 20.4. Кога да се извърши контрол на качеството на софтуера?
      • 20.5. Основният закон за контрол на качеството на софтуера
    • 21 Съвместно строителство
      • 21.1. Преглед на методологиите за съвместна разработка на софтуер
      • 21.2. Програмиране по двойки
      • 21.3. Официални проверки
      • 21.4. Други техники за съвместно разработване на софтуер
      • 21.5. Сравнение на техники за съвместно проектиране
    • 22 Тестване от разработчици
      • 22.1. Тестване от разработчици и качество на софтуера
      • 22.2. Препоръчителен подход за тестване от разработчици
      • 22.3. Техники за тестване
      • 22.4. Често срещани грешки
      • 22.5. Инструменти за тестване
      • 22.6. Оптимизиране на процеса на тестване
      • 22.7. Протоколи за тестване
    • 23 Отстраняване на грешки
      • 23.1. Общи проблеми при отстраняване на грешки
      • 23.2. Търсене на дефекти
      • 23.3. Отстраняване на неизправности
      • 23.4. Психологически аспекти на отстраняването на грешки
      • 23.5. Инструменти за отстраняване на грешки - очевидни и не толкова очевидни
    • 24 Рефакторинг
      • 24.1. Видове еволюция на софтуера
      • 24.2. Въведение в рефакторинга
      • 24.3. Избрани видове рефакторинг
      • 24.4. Безопасен рефакторинг
      • 24.5. Стратегии за рефакторинг
    • 25 стратегии за оптимизиране на кода
      • 25.1. Общо обсъждане на производителността на софтуера
      • 25.2. Въведение в оптимизацията на кода
      • 25.3. Къде да търсим мазнини и меласа?
      • 25.4. Оценка на изпълнението
      • 25.5. Итерация
      • 25.6. Подход за оптимизиране на код: Резюме
    • 26 Техники за оптимизиране на кода
      • 26.1. Логики
      • 26.2. Цикли
      • 26.3. Промени в типа данни
      • 26.4. Изрази
      • 26.5. Методи
      • 26.6. Пренаписване на код на език от ниско ниво
      • 26.7. Ако едно нещо се промени, нещо друго винаги остава постоянно
    • 27 Как размерът на програмата влияе върху дизайна
      • 27.1. Взаимодействие и размер
      • 27.2. Обхват на размера на проекта
      • 27.3. Как размерът на проекта влияе върху грешките
      • 27.4. Въздействие на размера на проекта върху ефективността
      • 27.5. Влиянието на размера на проекта върху процеса на разработка
    • 28 Управление на дизайна
      • 28.1. Награждаване на доброто кодиране
      • 28.2. Управление на конфигурацията
      • 28.3. Оценка на графика на строителството
      • 28.4. Измервания
      • 28.5. Хуманно отношение към програмистите
      • 28.6. Мениджърски мениджмънт
    • 29 Интеграция
      • 29.1. Значението на избора на интеграционен подход
      • 29.2. Честота на интегриране - инкрементална или инкрементална?
      • 29.3. Стратегии за постепенно интегриране
      • 29.4. Ежедневни тестове за изграждане и дим
    • 30 инструмента за програмиране
      • 30.1. Инструменти за проектиране
      • 30.2. Инструменти за работа с изходния код
      • 30.3. Инструменти за работа с изпълним код
      • 30.4. Инструменти и среди
      • 30.5. Създаване на собствени софтуерни инструменти
      • 30.6. Вълшебната страна на инструментите
    • 31 Форматиране и стил
      • 31.1. Основни принципи на форматиране
      • 31.2. Методи за форматиране
      • 31.3. Стилове за форматиране
      • 31.4. Форматиране на контролни структури
      • 31.5. Форматиране на отделни изявления
      • 31.6. Публикуване на коментари
      • 31.7. Поставяне на методи
      • 31.8. Форматиране на класове
    • 32 Самодокументиращ се код
      • 32.1. Външна документация
      • 32.2. Стилът на програмиране като вид документация
      • 32.3. Да коментирам или да не коментирам?
      • 32.4. Съвети за ефективно коментиране
      • 32.5. Техники за коментиране
      • 32.6. IEEE стандарти
    • 33 Личност
      • 33.1. Какво общо има характерът с това?
      • 33.2. Интелигентност и смирение
      • 33.3. Любопитство
      • 33.4. Професионална почтеност
      • 33.5. Комуникация и сътрудничество
      • 33.6. Креативност и дисциплина
      • 33.7. мързел
      • 33.8. Имоти, които са по-малко важни, отколкото изглеждат
      • 33.9. навици
    • 34 Основи на занаята
      • 34.1. Борба със сложността
      • 34.2. Анализирайте процеса на развитие
      • 34.3. Първо пишете програми за хората и след това за компютрите.
      • 34.4. Програмирайте с езика, а не на езика
      • 34.5. Фокусирайте вниманието си със споразумения
      • 34.6. Програма по отношение на проблемната област
      • 34.7. Пазете се от падащи камъни
      • 34.8. Итерация, итерация, итерация
      • 34.9. И нека религията да бъде отделена от разработката на софтуер
    • 35 Къде да потърся допълнителна информация
      • 35.1. Информация за дизайна на софтуера
      • 35.2. Теми, които не са свързани със строителството
      • 35.3. Периодични издания
      • 35.4. Референции за разработчици на софтуер
      • 35.5. Професионални асоциации
  • Библиография
  • Предметен индекс
  • За автора