Ես ստացել եմ իմ մասը գեղեցիկ գրված, over-engineered կոդը... մի պահին ես մտածում եմ, «Դա մի հետաքրքիր մեթոդ է անել այն», եւ հաջորդ րոպե դուք կարծում եք, «Ինչ է անում այստեղ!», Ես նաեւ վախենում է գրել over-engineered կոդը, որտեղ դուք կարծում եք, որ այնքան երկար ապագա, որ դուք վախենում. • The (You Are Not Gonna Need It) ռեժիմը լավ ճանապարհ է վերցնել over-engineering: գործառույթները պետք է տեղադրվել միայն այն ժամանակ, երբ դուք պետք է նրանց, ոչ թե հնարավորության վրա, որ դուք պետք է նրանց. Ես խոսել եմ over-engineering մի քանի անգամ հիմա, եւ մի քանի քեզ համար, ովքեր կարդում են այս, կարող է մտածել What is over-engineering? Այժմ YAGNI Այժմ Շատ պարզապես, over-engineering- ը գործում է ծրագրային / համակարգի դիզայնը ավելի հարմարավետ, քան անհրաժեշտ է: Սա սովորաբար կատարվում է, քանի որ դուք ցանկանում եք ավելացնել լրացուցիչ գործառույթը ձեր բաղադրիչի համար, որպեսզի հեշտացնել A- ի տեղադրման, միայն B- ի գործառույթը հետո ավելացնել: Մենք ունենք այս codebase- ի համար, որը կառավարում է հավելվածները: Դա հագուստ, հագուստ codebase- ի հետ տեխնիկական ծախսերը, որոնք կասկածում են արժեքը: Որքան ավելի դուք փորձում եք աշխատել հագուստ codebase- ում, այնքան ավելի մի բան այլ վայրում կասկածում է: Դուք պետք է վերցնել ամեն ինչ, եւ սկսեք ամեն ինչ: Աշխատանքը վերցնում է հագուստ codebase- ում: Դա կասկածում է տեխնիկական ծախսերը: Առաջին անգամ, դա զգում է որպես Hail Mary- ը: Հաջորդ անգամ, մենք կարող ենք աշխատել այս մանրամասային codebase- ում մանրամասական ծախսերի հետ: Մենք սխալ չենք: The abstraction line-up- Երբ աշխատում են մի քանի մարդկանց հետ մի codebase- ում ( ինչը ամեն ինչը միշտ է) եւ բիզնեսների համար, ովքեր ավելի հետաքրքրված են մատակարարման առանձնահատկությունները, քան կոդը որակի, code reviews միշտ վախենում են: Որոշ խնդիրների համար, ինչպիսիք են over-engineering եւ overabstraction, Traditional line-by-line code reviews- ը սովորաբար վախենում են այդ համակարգչային խնդիրները: Դուք ստուգում եք մի մասը, որը ստեղծվել է մի քանի շաբաթ առաջ, որպեսզի աջակցում է մի մասի ինտեգրման, հետեւելով DRY principle- ը, եւ հասկանում եք, որ այժմ 10 ինտեգրված / նման առանձնահատկություններ են, որոնք հիմնված են մի մասի վրա: Code reviews- ը պետք է բարձրացվի, որպեսզի ստուգել են այդ Սպագետիկ Dry Code Մենք ապրում ենք DRY (Don’t Repeat Yourself) երջանիկությունը, քանի որ դա հեշտացնում է աշխատանքը, եւ մշակողները ինքներդ խուսափելի են (մատ ճանապարհով): DRY- ը լավ աշխատում է orthogonal համակարգերի հետ: փոքրիկ, ինքներդ խուսափվող մասերը միասին ստեղծել են համակարգը: . համակարգերը պետք է ներառում են մի շարք համագործակցական մոդուլներ, որոնք յուրաքանչյուրը կատարում է գործառույթը անմիջապես: Հիմնական հոդված՝ The Pragmatic Programmer: From Journeyman to Master, Kitap.Guru Դա պետք է ավելի ճշգրիտ լինել orthogonal համակարգերի եւ DRY կոդը: Դա ավելի հեշտ է համատեղել կրկին օգտագործման գործառույթները, որոնք դուք ստեղծում եք միասին եւ ծախսել նրանց հետ, քանի որ վերահսկողությունը առաջանում է, երբ նրանք չեն փափուկ եւ վերահսկված, այն ժամանակ, երբ դուք ավարտում եք մի խոշոր համակարգի հետ միասին միասին այնքան միասին, որ դա կասկածվի միացնել, թե ինչ տեսակի կոդը, որը չի հասկանում ճշգրիտ ռեժիմ, դուք կգիտեք, որ սեղմելով սեղմը, քանի որ այն աշխատում է նոր կապի համար: Շնորհակալություն, դուք ստացել եք Spaghetti կոդը, որը չի կարող փափել: Եթե դուք կարող եք օգտագործել իրականապես orthogonal համակարգը Complex սարքավորումներ Ձեր բաղադրիչները պետք է համոզվածեն ոչ միայն վերադառնալով, այլեւ ամբողջ համակարգի փոքր բաղադրիչների համար: այլն, դուք կստանաք բաղադրիչներ այնքան բաղադրիչներ, որ նրանք կարող են հեշտությամբ կտրել մի մեկ փոխանակման հետ մի կապված բաղադրիչի համար: Երբ ստեղծում եք վերադառնալով բաղադրիչը պետք է գրել բաղադրիչը, որը չի բաղադրում որեւէ այլ բաղադրիչի բաղադրիչի համար, որպեսզի գործառույթ է գործառույթ, ոչ թե նպատակը: Երբ դուք ունեք վերադառնալով բաղադրիչի բաղադրիչները, որոնք բիզնեսի կամ API բաղադրիչի բաղադրիչի հետ, այն նույն բաղադրիչի վրա, դուք անում եք վերադառնալով: Այն սկսվում է փոքր Ապրանքներ, որոնք կարող են փնտրել վերլուծությունը եւ վերլուծությունը Մոդուլային մոդուլային մոդուլներ Modularity- ը նշանակում է, որ ձեր համակարգը կտրում է ավելի փոքր, անմիջական կոդը / բաղադրիչներ, որոնք կոչվում են մոդուլներ: Խնդրում ենք համոզվեք, որ խոսքը `կաղադրիչ`: Դուք կարող եք ստանալ մի մոդուլը, որը կտրում է ավելի քիչ կոդը, քան անհրաժեշտ է, ինչը ստեղծում է վերլուծություն, եւ այն պետք է խուսափվում: Over-abstraction- ը իրականում պարզապես մոդուլականության անմիջական փորձ է: Ձեր մոդուլները պետք է կարողան լինել աշխատել անմիջապես այլ մոդուլների հետ, պարզապես բացահայտելով անհրաժեշտ տվյալները: Լավ, մոդուլային, կառուցված մոդուլների փոխանցումներ պետք է ազդել միայն մոդուլներին, առանց որեւէ բաղադրիչ ազդեցություն: Առաջին գործառույթ Լավ մեթոդ է կառուցել orthogonal համակարգեր եւ հեշտությամբ փնտրել վերլուծություն է կառուցել գործառույթը առաջին, ապա գործառույթներ: Սա լավ հարմարվում է Component-Based architecture- ի հետ (լուծում UI բաղադրիչները stateful բաղադրիչների): գործառույթը կասկածվի ամենամեծ վերլուծական միավորների կոդը, որոնք կասկածված են տեղադրել գործառույթը: Login գործառույթը կասկածվի հետեւյալ գործառույթների: հավաքել օգտվողի անունը եւ սխալը (UI), ստուգել օգտվողի տվյալները, վերլուծել օգտվողի պրոֆիլը / վերլուծել հավաքված օգտվողի տվյալները: Բոլոր գործառույթները պետք է աշխատել անմիջապես, օգտագործելով միայն անհրաժեշտ տվյալ Ոչ մանրամասներ super-sophisticated code-ի համար Շատը մենք լսել ենք պատմություններ մասին կոդը, որը կարող է կարգավորվել կամ աշխատել միայն մեկ մարդ ընկերության մեջ, որը ոչ մի գործը, որը կարող է հպարտ լինել: Գիտեք, որ կոդը, որը կարող է գրել միայն ձեզ համար, շատ հնարավոր է նշանակել, որ այն շատ հարմարավետ է, կամ օգտագործում է աներթոնոդիշական գործընթացներ: Գալֆիլի Hard Drives- ը գրում է աներթոնոդիշական գործընթացների օգտագործման համար: Մեկ ընկերության նախնական աշխատողը հայտնի է, որ չի ստուգում կոդը, եւ այն մասին, որ ծրագրերը եւ կոդը բազայի մասեր են իր սխալ դիզայնի վրա (մատացրեք, որ այդ արտադրանքի պահպանման համար կախված է!). «Մենք վախենում ենք» - The best, worst codebase by Jimmy Miller Ես ստացել եմ, որ գրում եմ շատ հարմարեցված կոդը, քանի որ ես ուզում եմ օգտագործել նոր տեխնոլոգիաներ / փաթեթներ / գրասենյակներ, որոնք ես պարզապես սովորել եմ, ոչ թե կարծում եմ, թե դա ամենամեծ հեշտ գործիք է աշխատելու համար: Ապրիշը սովորելու համար մի բան նոր է մեծ, բայց իմանալ, թե երբ եւ որտեղ պետք է օգտագործվել, կարող է ավելի կարեւոր լինել: Հիմնական Երբ դուք ցանկանում եք գրել կատարյալ կոդը, որը ներառում է բոլոր հնարավոր ապագա եւ ժամանակի ճանապարհորդական գործիքները, դուք պետք է թողեք այն, քանի որ այն չի կարող գրել կատարյալ կոդը, նպատակն է կատարվել այնքան լավ է, որ կատարվում է բոլոր ձեր անմիջապես պահանջների համար: DRY- ը հիմնական է: վերադառնալը դեռ սխալ է ծրագրային զարգացմանում: DRY- ը պետք է կիրառվի orthogonal համակարգի համար, որը ստեղծում է մի կոդը բազան, որը կախված է, ամեն մոդուլը անմիջապես եւ փոխանցում է տվյալները հատուկ հանդիպման վայրում (մոդուլ գործառույթը): Նրանք կօգնեն ձեզ ստեղծել համակարգեր, որոնք հեշտ են վերահսկել եւ վերահսկել: Հիշեք, որ պարզը միշտ լավ է ծրագրային զարգացմանում: