Как да се разбере кода на някой друг, Чуваш
Преди да преминем към купчина текст, погледнете кода и да разберат какво прави:
Такива разработчиците пишат. Някой не разбирам изобщо, някой просто предполагам, какво прави този код. Но има начин да го разбере. На него ще бъде по-ниска.
1. Кодът получава по наследство. Когато добавите някого, и трябва да се прецени колко време ще е необходимо завършване.
2. Вашият код, за да завърши някой, който е направил промени в други разработчици, а вие трябва да разберете това, което завърши писмена форма.
3. Код преглед. За разлика от първите две по това, че трябва да се направи преди кода влиза в хранилище / производството.
Това, което трябва да се разбере кода на други хора?
Първият проблем се сблъсквате, гледайки код на други хора, - се определи къде да се правят промени. За тази цел търсене по различни критерии.
Третият проблем - неразбираема логика. Можете да прочетете кода, но не разбирам защо това е направено по този начин.
Как да се намери точното място в кода?
Открихме, на точното място, но да се разбере логиката?
Тук имаме следния код:
Имаме инициализиране на масив, който се нарича "храна", а след това се създаде обект на "котка", а след това по някакъв начин се равнява на котката да яде и да го съхранява в масив на храна. Тази логика само разбираема, ако нашият сайт продава shawarma. Дори ако вашата работа е - да се създаде друга котка, можете да го добавите, но тя отново ще бъде показана в редица храни. И защо така - ще остане загадка.
Добра практика - препрочитам на изискванията, да са наясно с предметната област и да се разбере защо е била изпълнена по този начин.
Пример за комплекс от началото на статията:
Никой отменен добрата стара дебъгер и преминете през, но все пак е необходимо познаване на предметната област.
Причините за сложен код
Какво наричаме лош код?
- "спагети код". Не е най-популярният вариант. Три методи, всеки от които прави нещо. Тялото на функцията повиквания са други методи, и дори на очите, че е невъзможно да се проследи веригата, която се нарича от. Код объркани, като спагети в купа.
- "Кости". Този код е много. Developer пише поредица, в която той прави нещо с елементите на масив, на която има този цикъл. И предупреждава, че doSomething извикване на метода на определена стойност хвърля грешка. Той просто казва, че ако стойността на масива - 4, е необходимо да го пропуснете и да преминете към следващата. Той предвижда тази ситуация и направи "резервен" вариант, за да не се объркаш е изпразнен. Но това, той създава други ситуации, които създават други извънредни ситуации, когато нещо не изглежда твърде много или да изглежда. Предприемачът също така ще продължи да гради върху други кости, припокриващи се по погрешка.
Как да живеем?
Реални примери лесно да се намери Можете да прочетете, ако проявявате интерес. Това е реален пример (това би било добре, дори с посочване на факта, че тук сме се нарича ххх функция, както и тук proinlaynili 100,500 линии) и никога не ще го направи?
.
UPD.
Последното нещо, което си спомням точно вижда от общността на отворения код - boofcv. Ето едно вкусно парче от Куанг. Ако бях намерен.
github.com/. ockPyramid.java
Какво е направено за да се оптимизира?
Търсещият констатира да. Този код е много бърз, няма допълнително allokeyshnov, всички буфери pereispolzuyutsya, част от операциите, по-рано се счита извън линия (които се използват без междинни променливи смислени имена), дори и закръгляване, се счита за по-бързо, в който можете да се възползвате от факта, че броят на не-отрицателни.
По принцип, ако вие го правите по-добре / по-бързо / по-красиво, тогава (а и не само мен) Ще се радвам, аз съм благодарен и щастлив да преминете към вашата библиотека. Само не се тълкува това като "първият нека го чуем" - това наистина би било много полезно и интересно решение за тези проблеми 95 (или може би 99) на сто от това, което правим.
Ако все пак мисля, че няма прошка пиша тези редове, предлагам да се спре дискусията като безсрамен.
ако кодът няма коментари за нетривиална логика, ако няма препратки към документи, които ще ви помогнат да разберете това не е тривиален логика, защо този код не govnokod? днес кодът работи със специален опит в областта на взрива, които те kamenty не е нужно, а утре той е в отпуск по болест и заместител обикновен formoshlep Washi. но необходимостта от поддържане на кода няма да си отиде. и тук kamenty и връзки с необходимите ресурси, за да formoshlepa Washi могат да ви помогнат да спести много време и фиксирани тривиална (по стандартите на Ла Специя) бъг.
Нека започнем с факта, че аз никога няма да участва в проекта, който е нетривиална логика formoshlepa Вася - нека пишат operden.
Това е всичко, което е писано за модели, но тъй като те също не са очевидни за някои formoshlepam. Не пишете едни и същи във всеки vizitore линк към уики или GOF книга на Амазонка.