Не, не става въпрос за Windows. Става въпрос за една интересна теория. Хорицата са изучавали как хубав квартал се превръща в гето. Изводът - с един счупех прозорец. Именно. Забелязали са, че ако една сграда има един счупен прозорец е много вероятно по-вероятно вандали да почнат да чупят и другите. Същото важи и за боклука […]
Category Archives: Програмиране
Table-Driven
Това за което ще пиша е един подход за организиране на кода. Срещал съм тази идея под различни имена - Table-Driven Approaches и Data-Driven Programming. Много пъти съм получавал много по-прост и разширяем код с този подход. И понеже ми е малко трудно да обясня на теория, първо ще дам няколко примера и после ще […]
The Pragmatic Programmer
Най-накрая прочетох една важна и основна книга на софтуерния занаятчия: The Pragmatic Programmer: From Journeyman to Master. Страхотна е. Фокусът е върху практическите (прагматичните) и полезни неща, като всяка идея е много добре аргументирана и представена. Аз научих много неща от нея:
как да си опростя процеса
за какво да внимавам като правя refactoring
как да си организирам […]
Mushroom management
Това IT-то просто не си е работа. Зарязвайте тази лудост и хващайте някоя по-нормална и здравомислеща професия - например водопроводчик. Ще ви е доста по-добре и няма да сте заобиколени с толкова идиотия и лудост.
Свежа илюстрация на горните редове е “термина” mushroom management. Отнася се за IT отдела. Може да го интерпретирате така:
Keep them in […]
<button name=”commit”>
Най-честата грешка, която правя в HTML:
<form>
……
<button name=”submit” type=”submit”>Submit</button>
</form>
Разликата е много коварна. Понеже бутона се намира във форма, той е достъпен в JavaScript като form.submit. Което е неприятно, понеже скрива функцията form.submit() и кара повечето ви скриптове да престават да работят по мистериозни причини. Мъдри са хората от Rails като техния submit_tag […]
Не избързвайте!
Това ме наведе на някои размисли. Ако ви мързи да цъкате на линка, ето го кода:
JAVASCRIPT [Show Styled Code]:
function confirmMessage(msg){
if ( confirm(msg) )
return true;
else
return false;
}
JAVASCRIPT [Show Plain Code]:
function confirmMessage(msg){
if ( confirm(msg) )
return true;
else
return false;
}
Не […]
Програмиране и шофиране
В книжката си за екстремно програмиране, Кент Бек прави интересна аналогия между разработката на софтуер и шофирането. Тя касае спецификациите. Големият мит на софтуерното разработване гласи, че първо клиента пише спецификация, след това програмистите правят дизайн и накрая го кодят. Поставя се една посока и след това се върви по нея. Кент Бек твърди, че […]
Интерфейси и абстрактни класове (в Java)
Често ми се случва да се чудя дали да ползвам абстрактен клас или интерфейс докато пиша на Java. И двете идват от леко остарелия ООП апарат на C++, в който наследяването се ползва предимно за две неща - предотвратяване на повторение на код и абстракция. Та, хрумна ми една проста схемичка как да определя кога […]
Uniform Access Principle
Днес прочетох за нещо, наречено Meyer’s Uniform Access Principle. Това е един много интересен прицип касаещ ООП езиците. Гласи горе-долу следното:
Атрибутите на един обект трябва да се достъпват чрез нотация, която не позволява да се различи дали те са имплементирани чрез запис или чрез изчисление.
Иначе казано, line.length не трябва да издава дали става въпрос за […]
Куинче на Python
Наскоро си ходих по улицата и си спомних за едно предизвикателство от детството ми - да напиша програма, която принтира кода си. Не знам дали на вас ви се случва да ви хрумват такива неща, докато си ходите по улиците. Или да си спомняте такива предизвикателства от детството си. Аз обаче съм от този тип […]