Големи програмски зборови или фрази

Заштитник за џебРаботејќи со некои исклучителни програмери, честопати се наоѓам на состаноци со архитекти, лидери и програмери кои (мислам дека) сакаат да фрлаат некои големи зборови или фрази таму за да се обидат да ги исплашат менаџерите на производи или нивните клиенти.

Тоа е една од оние работи што програмерите сакаат да ги прават. Еве десет од нив со многу едноставен опис (што несомнено ќе го привлече гневот на програмерите насекаде, додека ја уривам нивната терминологија до смрт со моите едноставни автомобилски метафори):

  1. Апстракција - ова трае тежок процес или функција и во основа го разложува логично… или по хиерархија (A припаѓа на B, B припаѓа на C, итн.) Или по карактеристика или функција (боја, големина, тежина, итн.). Апстракцијата го олеснува објектно-ориентираното програмирање со логично организирање на функционалноста. За да го изградам мојот автомобил, градам рамка, мотор и каросерија одделно.
  2. Амортизација - ова значи дека има некој стар код во системот што може да остане, но треба постепено да се укине. Кога кодот е амортизиран, програмерите не го упатуваат кодот или не користат понов код додека сите референци не отидат на стариот, во кое време треба да се отстрани. Понекогаш, ако станува збор за некоја функција што исчезнува, можете да ја задржите некое време со предупредување до вашите корисници дека ќе исчезне. Добивам нов стерео систем со нови жици, но ги оставам старите жици и не ги користам.
  3. Енкапсулација - ова е процес на организирање на вашите програмски функции во рамките на родител кога функцијата не достигнува низ другите делови на системот. Ако имате милиони функции, сакате да ги имате ефикасно организирани и функционираат во областите со кои тие работат, отколку да ги имате на глобално ниво. Ја ставам потпорната механика на моторот во моторниот простор ... Не го ставам филтерот за масло на задното седиште.
  4. Наследство - ова е можност за преземање на својствата на друг дел од заедничкиот код (класа) со цел повторно да се користи за нова функционалност, без да мора да се препишува. Наследството е уште една добра практика за развој ориентирана на објектот. Моето седиште за автомобил може да се користи за носење дете или возрасен - кој и да седи во него.
  5. Нормализација - ова е метод за организирање на поголема ефикасност на податоците во базата на податоци преку градење референци. Пример би бил ако треба да снимам семафори цел ден… црвена, жолта и зелена. Наместо да го запишувам секој запис со црвена, жолта и зелена боја - јас пишувам 1, 2 и 3, а потоа направам друга табела каде 1 = црвена, 2 = жолта и 3 = зелена. На овој начин само еднаш запишувам црвена, жолта и зелена боја. Секоја врата од мојот автомобил има иста рачка на вратата. Една рачка, користена на 4 различни локации отколку на 4 различни рачки.
  6. Објектно ориентирано - во современите програмски јазици, ова е метод на дизајн кој ви овозможува да напишете специфичен код во делови, по функционалност, а потоа повторно да ги користите. Пример би бил ако сакав да проверам дали има валидна конструирана адреса за е-пошта. Функцијата би можел да ја изградам еднаш, а потоа да ја користам каде што треба во мојата апликација. Мојот автомобил има 18 бандажи кои можат да ги користат на други автомобили од истиот или други производители.
  7. Полиморфизам - Ова е тешко да се објасни, но во основа тоа е можноста да се развие код што може да се користи динамично за други ситуации. Со други зборови, може да наследи уникатна и динамична функционалност едноставно по пат на кој се повикува. Ова е многу ефикасно средство за развој. Може да го користам електричниот штекер на мојот автомобил за да го полнам мојот телефон или да ја снабдам пумпата за гуми со сок.
  8. Рекурзија - ова е метод каде самиот код се однесува. Понекогаш, тоа е ефикасно и намерно, но во други времиња може да заврши со излегување од контрола на вашите апликации. Јас кликнувам на стереото за мојот автомобил и тој минува низ радиостаниците. Никогаш не завршува, само продолжува.
  9. Реновирање - ова е процес на препишување на кодот за да може полесно да се следи или да се организира подобро, но не мора да се додадат дополнителни функционалности. Го обновувам моторот.
  10. Архитектура ориентирана кон сервер (SOA) - земете објектно-ориентирано програмирање и применете го на големи системи каде што можете да имате цели системи кои вршат одредени функции. Можеби имате систем за управување со односи со клиенти што зборува за систем за е-трговија што зборува за систем за испорака, итн. Јас повлекувам приколка со мојот автомобил за да испратам предмети од едно до друго место. Јас користам приврзок удар (XML) за да ги поврзам.

Сфаќам дека моите метафори не беа секогаш совршено на целта. Се надевам дека помогнаа малку, сепак!

Неколку совети кога ќе ги слушнете овие зборови на вашиот следен состанок со програмер ... не враќајте на своето место и погледнете ги нагоре Википедија, тие ќе гледаат. Не трескај се, тие ќе нападнат. Еве што да направите… размислете низ прозорецот како да сте во длабока мисла и потоа погледнете наназад со испитувачки поглед или изгребајте ја брадата. Почекајте да ја следат нивната изјава со повеќе информации.

. Тие гледаат.

8 Коментари

  1. 1

    ЛОЛ навистина го заковавте Даг ... Дали се обидувате да нè исклучите од деловна активност? Знаете добро, проклето, ние банкаруваме дека тие концепти не се разбрани и затоа се снаоѓаме со клиентите. Сега мора да сфатиме начин како да ги разнесеме комбинирање на оние бучни зборови за да создадат една џиновска фраза што може да оди вака:

    Па добро, знаете дека функцијата што се обидувате да ја ставите може да се апстрахира на повеќе објекти што ја содржат функционалноста и комуницираат преку архитектура ориентирана кон услуги

  2. 5

    Бидејќи сум развивач на софтвер, можам да го ценам овој пост. Сепак, не сме толку лоши ... Никогаш не би ги бамбулзирал луѓето со такво техничко џагорење

    Дозволете ми да пробам и да размислам уште неколку зборови за тебе.

Што мислите?

Оваа страница користи Akismet за намалување на спам. Научете како се обработува вашиот коментар.