Loyihalar bo'yicha kodning kichik qismlarini baham ko'rishning eng yaxshi usullari

Men har doim DRY qoidasiga qat'iy amal qilmoqchiman; har safar men kodeksni takrorlamasdan takrorlayman, keyinchalik bu kodni ikkita joyda saqlab turishim kerak bo'lsa, u yana qaytib keladi.

Lekin tez-tez, bir-biriga mos kelmaydigan ikkita loyiha bo'yicha qayta ishlatilishi kerak bo'lgan kichik usullarni (ehtimol, 10-15 satr kodlar) yozaman. Usul tarmoq bilan ishlash/stringlar/MVVM va hokazo. Bilan bog'liq bo'lishi mumkin va dastlab o'tirgan loyihaga xos bo'lmagan odatda foydali usuldir.

Ushbu kodni qayta ishlatishning odatiy usuli qayta foydalanish mumkin kod uchun mustaqil loyiha yaratish va kerakli loyihaga murojaat qilishdir. Buning sababi biz ikkitadan kam bo'lmagan ideal ssenariylardan birida ro'y beradi:

  1. O'nlab/yuzlab kichik loyihalar bilan yakun topamiz - har birimiz qayta ishlatishimiz kerak bo'lgan kichik sinflarni/usullarni uyga joylashtirish. .dll butunlay yangi kodni yaratish uchun kerakmi?
  2. Bir-biriga yaqin bo'lmagan usullar va mashg'ulotlar to'plamini olib boruvchi yagona loyiha bilan yakun topamiz. Ushbu yondashuv - men ishlagan odatdagidek kompaniyam. Ular yuqorida aytib o'tilgan narsalar uchun papkalarga ega bo'lgan base.common nomli loyiha bor edi: tarmoq, string manipulyatsiyasi, MVVM va boshqalar. Bu ajoyib darajada foydaliligandi, ammo uni keraksiz ravishda barcha keraksiz kodlar bilan sudrab yurtdingiz kerak emas.

Mening savolim shunday:

Dastur guruhlari loyihalar orasidagi kichik bit kodlarini qayta ishlatish bo'yicha eng yaxshi usul bilan qanday ishlaydi?

Ayniqsa, kimdir bu sohada siyosat olib borgan bir kompaniyada ishlayotgan bo'lsa, yoki men bu kabi ikkiyuzlamachilikka duch kelgan bo'lsa, ayniqsa qiziqaman.


note: My use of the words "Project", "Solution" and "Reference" come from a background in .NET development in Visual Studio. But I'm sure this issue is language and platform independent.

101
Agar "NGen" mahalliy kodni kompilyatsiya qilsam, qancha yuklanadi?
qo'shib qo'ydi muallif Thomas Owens, manba
Men qisqa javob bergan bo'lardim, lekin menda vakili yo'q. Netmetodlardan foydalanishni taklif qilaman va ular bilan bog'liq kod bilan ko'plab kichik loyihalarga ega bo'lishni taklif qilaman, shuning uchun siz o'zingizning kodingizni bir joyda saqlab qolish uchun foydalarni muvozanatda saqlashingiz mumkin va xavotirlarni yaxshi ajratish va ularni netmodulni kodni takrorlaganidek, bitta majlis. Menimcha, C/C ++ da statik ulanish deb ataladi.
qo'shib qo'ydi muallif E.Z., manba
Bu, albatta, @ p.s.w.g., ~ Deyv Xiller va boshqalar kabi muvozanatli yondashuvni qo'llashda.
qo'shib qo'ydi muallif E.Z., manba
@ColeJohnson. NET o'zi o'zi katta havola! Ehtimol, men o'zim qiladigan dlyaellardan kattaroq.
qo'shib qo'ydi muallif Kronass, manba
To'g'ri. Mahsulotingizdan foydalanishni istagan har bir kishiga hali ham butun. NET Framework tarqatish kerak bo'lsa-da, katta loyihalar va murakkab echimlar boshqarish qiyinroq.
qo'shib qo'ydi muallif Kronass, manba
@gnat Men bu dublikat emasligiga ishonmayman. Qarang: tahrirlash - bu hujjat yoki jamoani ishontirish emas. Bu kodni takror ishlatishning alohida hodisasi, ya'ni kichik bit kodlarini qayta ishlatish haqida.
qo'shib qo'ydi muallif Kronass, manba
qo'shib qo'ydi muallif Cynapse, manba
Til va IDE bu erda bilish foydali bo'lardi. Har qanday vosita faqat shu muhit bilan aloqa o'rnatishi mumkin.
qo'shib qo'ydi muallif RhysW, manba
@ Cyborgx37 g'amxo'rlik qilmoqchimisiz?
qo'shib qo'ydi muallif Cole Johnson, manba
Men buni olaman. Biroq, .NET-ning JIT kompilyatori faqat kerakli usullarni RAMga (faqatgina ular chaqirilganda)
qo'shib qo'ydi muallif Cole Johnson, manba
+1 bo'lsa-da, men ishlaydigan biror kishi ichida hazil elementi mavjud deb hisoblayman. NET DLL moslamasi orqali noma'qul kodni sudrab tashlashga tashvishlantirmoqda.
qo'shib qo'ydi muallif user57863, manba

12 javoblar

Agar ular haqiqatan ham qayta ishlaydigan usullar/mashg'ulotlar bo'lsa, siz ularni "Shveytsariya ittifoqi pichog'i" kutubxonalarining kichik soniga yozishingiz mumkin. Biz buni kompaniyamda tez-tez bajaramiz; Biz ularni bazaviy kutubxonalar deb ataymiz:

  • Framework.Data - Utilities for working with database queries.
  • Framework.ESB - Standard methods for interacting with our enterprise service bus
  • Framework.Logging - Unified loging system
  • Framework.Services - Utilities for interacting with web services
  • Framework.Strings - Utilities for advanced string manipulation/fuzzy string searching etc.
  • ...

Umuman olganda, o'nga yaqin kutubxonalar mavjud. Siz kodni to'g'ri taqsimlashingiz mumkin, ammo siz yuzlarni to'ldirishingiz yoki har bir buyumni yirik majmua ichiga tashlashingiz shart emas. Ushbu yondashuv mos tushadi, chunki ba'zi loyihalarimiz Framework.Data </​​code> kerak bo'ladi va faqat bir nechtasini Framework.Strings ga kerak bo'ladi, shuning uchun iste'molchilar faqatgina loyiha uchun tegishli bo'lgan ramka.

Agar ular haqiqatan ham osonlikcha qayta ishlatilishi mumkin bo'lgan haqiqiy usullar/mashg'ulotlar emas, balki faqat parchalar bo'lsa, ularni faqat IDE kod qismlari sifatida tarqatishingiz mumkin (masalan, Visual Studio kod parçacıkları ). O'tmishda men birga ishlagan jamoalar umumiy kodlik kutubxonasiga ega bo'lib, u hammani oddiy kodlash amaliyotlariga ichki kod bilan ham moslashishini osonlashtirdi.

73
qo'shib qo'ydi
Ha, o'zaro kelishilgan kodga qo'shilaman. Va "sizning iste'molchiga to'g'ri kirish kodini yozishni osonlashtiradi". Bu miyamda bir nechta narsalarni to'satdan tushirib yubordi!
qo'shib qo'ydi muallif Paul Roub, manba
+1 Bu mening ham yondashuvim. Ikki yoki undan ortiq jihatdan narsalar bilan bog'liq bo'lgan kodni qaerga qo'yish kerakligi haqida bilishni xohlaysiz. Masalan, IPAddressToString. Va bu kutubxonalarning bir-biridan foydalanishiga ruxsat berasizmi? Misol uchun, xizmatlar va ma'lumotlar, ro'yxatdan o'tishdan juda ko'p foyda keltirishi mumkin ...
qo'shib qo'ydi muallif Paul Roub, manba
@ p.s.w.g: ajoyib aqllar!
qo'shib qo'ydi muallif Brad Wilson, manba
+1 Ushbu ramka kutubxonalarini olib, ichki NuGet havuzuna (tarmoq papkasi kabi oddiy) joylashtirasiz va uni boshqarish uchun yaxshi usul bor.
qo'shib qo'ydi muallif Brad Wilson, manba
@SteveEvers Men aslida bu ishni bajarish ustida ishlayapman. : R.
qo'shib qo'ydi muallif Benoit-Pierre DEMAINE, manba
@MarjanVenema Biz o'zaro bog'liqliklardan qochishga harakat qilamiz. Bizning xizmatlarimiz va ma'lumotlar doiralari o'zlari tomonidan hech qanday yozishni amalga oshirmasliklari bilan yoziladi, lekin iste'molchiga tegishli kirish kodini yozishni osonlashtiradi. Framework kutubxonalari bir-biriga murojaat qilishlari mumkin, ammo ular faqat kengaytma bilan - masalan. Framework.Logging.Gibraltar logging tizimiga alohida qo'shimcha hisoblanadi.
qo'shib qo'ydi muallif Benoit-Pierre DEMAINE, manba
@MarjanVenema Cross-Cut kodi uchun, bu iste'molchilar nima usuli foydali ekanligini topishidan bog'liq. IPAddressToString uchun, tarmoq protokollari bilan ishlaydigan iste'molchilar buni qo'llashlari kerak, lekin iste'molchilar satrlari bilan ishlaydigan ko'p narsalarni qila olmaydi, aslida IP manzillarini umuman qiziqtirmasligi mumkin. Ehtimol, Framework.Strings o'rniga tarmoq paketida ishlaydi.
qo'shib qo'ydi muallif Benoit-Pierre DEMAINE, manba

Ko'p sabablar bo'yicha qabul qilingan javobga qo'shilmayman.

Mening tajribamda, qabul qilingan javob kabi "turli" kutubxonalarni ko'rganimda, ular g'ildirakni qayta kashf qilish uchun uzrli sababdir (yoki bu erda ixtiro qilinmagan (NIH) ) - buzilishiga qaraganda ancha katta gunohdir < href = "http://en.wikipedia.org/wiki/Don%27t_repeat_yourself" rel = "noreferrer"> Dont Repeat Yourself (KURU) .

Ba'zida DRYni buzish, oqilona kelishuvga aylanishi mumkin, bu esa qat'iy birlashuvni joriy qilishdan yaxshiroqdir. Qayta foydalanish yaxshi ob'ektga yo'naltirilgan dizayni bilan taqqoslaganda ikkinchi darajali masala. Bir oz (ya'ni kichik miqdorni nazarda tuting, takrorlashning Uchta qoida »ni qo'llang) spagetti kodlari bazasidan ko'ra yaxshiroq tushunish.

Ko'p umumiy maqsadli kutubxonalarga yondashuv yomon misoldir. Bu yig'ilishning nozik tanqisligiga olib keladi va juda ko'p majlislar yomon. Men yaqinda 24 ta kutubxonadan 6 ta kutubxonaga o'zimning ish joyini qisqartirdim. Derleme vaqtini bir necha daqiqadan ~ 20 soniyagacha yaxshilandi. Vizual studiya ham o'rnatish uchun asta-sekin va undan ko'p montajlar bilan kam javob beradi. Ko'plab kutubxonalarga ega bo'lish, shuningdek, kodning yashashi kerak bo'lgan holatlarda ham chalkashlikka olib keladi; kamroq, oddiy qoidalar afzalroq.

Nima uchun .NET Framework'dagi narsalar etarli emas? Asosiy juda katta; Men allaqachon mavjud bo'lgan narsalarni qayta ishlatadigan kodni ko'p marta ko'rganman. Haqiqatan ham sizning ramkalaringiz ".NET" doirasidagi bo'shliqlarni to'ldirayotganiga va estetik sabablarga ko'ra mavjud bo'lmasligiga ishonch hosil qiling (masalan, "bu erda .net doirasi menga yoqmaydi" yoki ehtimol ba'zi bir

erta optimallashtirish )

Arxitekturangizga yana bir qatlamni kiritish muhim murakkablikka ega. Nima uchun qatlam mavjud? Men yolg'on takror ishlatishni ko'rdim, shuning uchun kod o'z ichki inshootining yuqori qismiga qurilgan. Buni to'g'ridan-to'g'ri standart kutubxonalarning yuqori qismida amalga oshirish ancha samarali bo'lar edi.

Standartlashtirilgan texnologiyalardan foydalanish (masalan, .Net framework va ommabop 3-partiya/ochiq-oydin manbalar kutubxonalari) o'zingizning qurishingiz uchun qiyosiy texnologik yutuqlardan ustun bo'lgan foydaga ega. Ushbu texnologiyalarni biladigan iste'dodni topish osonroq va mavjud ishlab chiquvchilar uni o'rganishga ko'proq sarmoya kiritadilar.

Mening tavsiyalarim:

  • Ushbu kodni taqsimlamang.
  • Birlashtiruvchi maqsadga ega bo'lsa, yangi kutubxona yaratish loy dizayn naqshining to'pi .
  • Mumkin bo'lgan joylarda mavjud bo'lgan 3-tomonli kutubxonalarni qayta ishlatish.
  • Qisqacha qoidalar bilan qaerda kod yashash kerakligi haqida kamroq montajlarni afzal qiling.
20
qo'shib qo'ydi
Men bu erda qabul qilingan javob bilan kelishmovchilikni ko'rmayapman :-). "Qaerga kod bo'lishi kerakligi to'g'risida oddiy qoidalar bilan" kamroq yig'ilishlar qabul qilingan javobga zid emas. Javob, shuningdek, faqatgina turli xil assembleyalar yordamida faqatgina oqilona ko'rinishda qo'llaniladi.
qo'shib qo'ydi muallif Julien Hoarau, manba
Ochiq manbalar kutubxonalaridan foydalanish imkoniyati cheklangan foyda, agar siz ba'zi yaxshilanishlarni taklif qilsangiz, uni jamoatga qaytarishingiz mumkin! Misol uchun, .NET MS Enterprise versiyasi (hozirgi Ochiq Manba) nashr qildi, bu umumiy senaryolar uchun juda yaxshi vositalar to'plamini beradi, u erda yaxshilanadigan narsalarni toping va xursand bo'ling! Har bir inson foyda keltiradi!
qo'shib qo'ydi muallif glenatron, manba

Kichik bit kodlari uchun - hech qanday bog'liqliksiz bitta sinfga aytamiz - biz kodni loyihaga ko'chirish va joylashtirishga moyilmiz. Bu DRY buzilishi kabi ko'rinadi, va men buni ba'zan bo'lishi mumkinligini tan olaman. Biroq, uzoq muddat davomida bir necha sabablarga ko'ra bir necha yirik, ko'p qirrali loyihalarga ega bo'lishdan ko'ra bu juda yaxshi bo'ldi.

Birinchidan, kodni qulaylashtirish, ayniqsa, narsalarni tuzish va disk raskadrovka qilishda foydalanish osonroq.

Ikkinchidan, har doim ham ushbu loyiha uchun umumiy kodga biroz kichikroq chizish qilishni xohlaysiz. Agar manbai sizning mahalliy nusxangiz bo'lsa, shunchaki chizish mumkin va uni bir kun deb atash mumkin. Birgalikda kutubxona mavjud bo'lsa, unda siz kutubxonani tweaking qilishingiz va keyin barcha boshqa ilovalarni sindirmaysiz yoki versiyalash kabusini yaratmaganligingizga ishonch hosil qilishingiz mumkin.

Shuning uchun u o'z ism-sharifiga etarli darajada etarlicha ega bo'lmasa, biz uni loyihadagi tegishli bitlarga surib, uni bir kun deb ataymiz.

10
qo'shib qo'ydi
Bu yondashuvga qo'shilmayman. Kichik parchalarni boshqarish bilan parvarishlash muammolarini qadrlayman, lekin ularning hammasidan birida @ p.s.w kabi ba'zi umumiy kutubxonalar yaratilishi mumkinligini ta'kidlayman. taklif qiladi. Undagi kichik tweaks bilan kodning ikki nusxadagi nusxalari muammoga duch kelmoqda. Vazifalar amalga oshiriladi, xatoliklar tuzatib yuboriladi.
qo'shib qo'ydi muallif James Hopkin, manba
+1 - Menimcha, bu yondashuvni juda tez-tez ishlatishni istamasangiz ham bo'ladi. Ba'zi qismlar dizayn naqshlariga o'xshashdir - siz ularni qayta ishlatasiz, lekin biroz farqli ravishda hamma joyda, va ehtimol boshqa tillarda, va ehtimol siz ularni o'zgartirishni xohlaysiz. Bundan tashqari, keng qo'llanilgan kutubxona moslashuvchan emas, chunki uning APIdagi o'zgarishlari juda xavflidir. Va nihoyat, bu yondashuvni sinchkovlik bilan tahlil qilib, tajribali materiallarni biroz uzoqroq tutib, umumiy kutubxonalarning sifatini oshiradi.
qo'shib qo'ydi muallif exnihilo1031, manba
-1 (javob uchun). Har bir dasturning o'z versiyalarining o'z nusxalari mavjud bo'lishiga, albatta, osonroqdir. Bu dastur 80-yillarda ishlab chiqilgan. Men shuni o'rgandim - uzoq muddatli - bu tartibsizlikka olib keladi. Odamlar ishi haqida ko'proq ma'lumotga ega bo'lishlari uchun to'g'ri ish qilish va umumiy kutubxonaga ega bo'lish juda qiyin. Xo'sh, ular kerak.
qo'shib qo'ydi muallif Michael Durrant, manba

Siz tasavvur qilgan ikkinchi yechim bu yomon emas. .NET-da, siz faqatgina bitta sinfdan foydalansangiz ham, GAC dan yig'ilishga murojaat qilasiz. "Aloqasiz kodni tortib olish" sizning fikringizcha bu muammo emas. Bu holda, kamida turli nomlardagi toza tarzda tashkil qilingan tegishli usullarni va sinflarni saqlash juda muhimdir. Bunga qo'shimcha ravishda, ushbu yechimning to'siq bo'lishiga yo'l qo'ymaslik uchun API loyihalash uchun yaxshi ilovalar qo'llanilishi kerak.

Agar bu juda kichik bit kodlarga to'g'ri keladigan bo'lsa, men quyidagi yondashuv umumiy loyihaga yaxshi qo'shimchalar: ularni har xil echimlarda takrorlashlariga ruxsat bering. Ularga eng yaxshi amaliyotlar kabi murojaat qiling: hujjat va ularni jamoaga etkazing.

5
qo'shib qo'ydi
Faqat nostandart kutubxonalar uchun bundan tashqari, bitta (yoki bir nechta) maqsadlarda foydalanilganligingiz tufayli siz katta majlisni yuborishingiz kerak. Bu standart narsalar uchun masala emas, chunki u baribir mavjud bo'ladi, lekin siz uni yaxshi tarzda ajratishingiz mumkin bo'lsa, men katta hajmdagi, lekin ko'pincha foydalanilmaydigan yig'inlarni jo'natmaslik kerak.
qo'shib qo'ydi muallif poke, manba

Men faqat "korxona" muhitida ishladim, bu erda bunday narsa muammoni hal qildi va har safar bu ikkinchi variant bo'ldi. Ko'p hollarda u yaxshi ishlaydi, chunki amaliyotda hech qanday cheklovlar mavjud emas.

Biroq, o'tgan haftani o'z Nuget serverini boshqarayotgan start-up bilan o'tkazdim va buni buni hayotiy muqobil deb taklif qilmoqchiman. Albatta, men kutmoqdaman muammolarni kashf qilish qobiliyati atrofida bo'ladi.

Agar loyihalar munosib darajada tanlansa va nomlar mantiqqa to'g'ri keladigan bo'lsa, men buni joylarda ommabop yondashuvga aylantira olaman.

5
qo'shib qo'ydi
Ha, tushundim. Ha, siz ta'rifda nimani yoqtirganingizni aniqlay olasiz va qidirish mumkin bo'ladi, biroq menimcha, biz paketlarni yetarli darajada birlashtirdik, chunki bu muammo emas.
qo'shib qo'ydi muallif fluffels, manba
Qaysi ma'noda ularni kashf etmasliklarini kutasiz? Biz katta va o'sib borayotgan nuget paketlardan foydalanamiz. Bizda mavjud bo'lgan eng katta masala varaqlash va qaramliklarni boshqarish bilan bog'liq.
qo'shib qo'ydi muallif fluffels, manba
@sarfeast Agar siz Nuget serveriga qarashli ulanishga ulashsangiz yaxshi bo'lardi va bu haqida bir oz gapirib bering.
qo'shib qo'ydi muallif K-minus, manba
Ha, ha. Ular ham. Men kashfiyot qobiliyatiga oid masalalar bo'yicha ma'lum funktsiyaga ega bo'lgan kichik paketlarni beradigan bo'lsak, har birini kataloglashtirish (va topish) ancha qiyinlashadi. Masalan, jamoangiz qanday paketlarni turli funktsiyalarga ega ekanligini qanday biladi? (bu erda nuget qidirish jodugini ko'rsatadigan)
qo'shib qo'ydi muallif RobinM, manba

Yaqinda men bu haqda o'ylab qoldim va nima yuz bergani shu paytgacha aytib o'tganidek, keng tarqalgan umumiy usullar kutubxonasi edi, lekin bu bir burilish bilan. Kutubxona loyihasi kompilyatsiya vaqtida qaysi qismlarga BusyBox loyihasi ga o'xshash turdagi ma'lumotlarni kiritish imkonini beradi. Bunday yondashuv bilan siz oshxona rezina kutubxonasi repomiga ega bo'lishingiz mumkin, faqat kompilyatsiya paytida kerak bo'lgan vositalarni egallashingiz mumkin.

5
qo'shib qo'ydi

GitHub has a pretty useful tool for saving code snippets https://gist.github.com/

Sizning parchalaringizni saqlab qo'yishingiz yoki ularni boshqa odamlar bilan bo'lishish uchun foydalanadigan gitar omborlari sifatida saqlaydi.

4
qo'shib qo'ydi

men juda ko'p muammolarga duch keldim, va mening qarorim - kodni github/pubic veb-ommabop omborda joylashtirishdir. juda ko'p muammolarni hal qiladi -

  1. qulay foydalanish va almashish oson. cvs/svn/enterprise-repos loyihani bir nechta IDE ish joylarida tekshirishni va ba'zan ish joylarini yoki kompyuterlarni kichik kod parchasini murojaat qilishni o'zgartirishni anglatadi.
  2. kodning bu parchalarini o'z ichiga olgan holda, maxfiy va sinfga oid kodlar bo'lmagani va jamoatchilikka ma'lum bo'lgan ma'lumotlarning o'zgarishi bo'lib, ularni gipat kabi ommaviy repolarga joylashtirish boshqalar unga qarash va hatto hissa qo'shishi mumkinligini anglatadi.
  3. Sizning nomingiz ostida jamoatchilik mulkiga biror narsa yuborish obro'ning qo'shimcha bosimiga ega.
  4. </body> </

  5. yangilanishlar. Agar repodada kod snippetlarini saqlab qolish haqida narsa bo'lsa, agar parcha uzoq vaqt davomida ishlatilmagan bo'lsa, eskirgan (eskirgan apis/libs) bo'lishi mumkin. Misol - faylni o'qish uchun java kod snippet. siz buni 2009 yilda amalga oshirishning eng yaxshi yo'lini topib olgan bo'lardingiz, ammo 2014 yilda hamma narsani o'zgartiradigan yangi fayl paydo bo'ladi. parcha bormi? 2009 yilda ham yopiq. Jamoat repo-da, siz yoki siz (chunki siz 3-modda), sizning jamoa do'stlaringiz yoki umumiy dasturchilar populyatsiyasining ayrim a'zolari yangilanadi, va bu jarayonda hatto siz uzoq vaqt davomida noto'g'ri ish qilgan bo'lishingiz mumkin.

Tavsiya etayotgan narsalardan biri - siz qaerda o'zingizning parchalaringizni saqlab qolishingizdan qat'iy nazar, har doim Google'dan foydalanishingizdan oldin uni to'ldiring. hamma narsa o'zgaradi. saqlangan parchalar vaqtni tejash, balki unlini oshiradi .

2
qo'shib qo'ydi

Jamoa/loyiha/kompaniyaning kattaligiga qarab, agar bu sizning atrofingizdan qandaydir tarzda shakllantirilgan bo'lsa va undagi har qanday echim (agar siz uni tatbiq qilsangiz) biroz pulga sarflanmasa, unda samarali ish qilish juda qiyin bo'ladi. (Bu sizga ko'proq yordam berishi mumkin, ammo siz osongina o'lchash imkoniga ega bo'lmaydi). Buning narxiga to'g'ri kelishini tekshirishingiz kerak. Shuni ham yodda tutingki, qayta ishlatiladigan echimlar mavhum bo'lib qoladi va ko'p hollarda ko'p hollarda mos keladi, ammo maqbul bo'lmaydi.

Har qanday holda, agar siz buni bir nechta shaxs tomonidan ishlab chiqarilgan kod uchun qilishni istasangiz, avvalo, har kimning xabardorligi va hamkorlikni bilib olishingiz kerak bo'ladi. Bunga ishlab chiquvchilar va menejerlar kiradi.

Keyin siz buni amalga oshirishni istagan joyni bilishingizga ishonch hosil qilishingiz kerak. Jamoa? Loyiha? Bo'lim? Kompaniya bormi? Javoblarga qarab, bunday echimlarni kiritadigan kod turini o'zgartiradi, chunki siz dlyoylarni moslashtiradigan granularity bo'ladi. Biror kishiga bu qarorni berganingizdan keyin (bu g'oyaga sizni qiziqtirganingizdan afzalmi-yo'qmi?) O'tirib, bu tuzilmani boshlash kerak.

Biroq, bu kabi fayllarni yaratish, hiylalarni qilish uchun etarli bo'lmaydi. Ularni foydali qilish uchun ularni (foydalanuvchilarga va sheriklarga) reklama qilishingiz va ularni odatda uzoq vaqtdan beri boshqarib turadigan birovni qo'yishingiz kerak bo'lgan boshqa dasturiy ta'minot kabi saqlashlari kerak. Sizga ishonchli hujjat kerak bo'ladi, bu esa parvarishlarga muhtoj bo'ladi. Bir oz omad va hamkorlik qilish bilan siz bir necha eng yaxshi amaliyotlar bilan yakunlashingiz mumkin, biroq u ham ishtirok etadigan jamoalarning kattaligiga va soniga qarab osonlikcha o'z loyihasiga aylanishi mumkin. Buning uchun menejmentni qo'llab-quvvatlashga ehtiyoj bor.

2
qo'shib qo'ydi

Mening kompaniyam intranet-mahalliy veb-xizmatlardan foydalanadi. Umumiy ichki veb-xizmatlar sifatida o'rnatiladigan bir nechta veb-xizmatimiz bor va boshqa loyiha uchun mo'ljallangan xizmatlardan biriga kirishni talab qiladigan bo'lsa, u ma'lum bir interfeysga ega bo'lgan http-so'rovni yuboradi. U bir xil server fermasida joylashgan intranetda bo'lgani uchun bu talablar juda tez.

Shubhasiz, bu faqat internet-ilovalar bilan ishlaydi (va faqat bir xil mahalliy tarmoqda bo'lgan millisekundda ishlaydi), lekin u juda yaxshi afzalliklarga ega.

1
qo'shib qo'ydi

Bizda ushbu kichik usullarni testlar bilan birga saqlaydigan alohida "kommunal" loyihasi mavjud.

Agar loyihaga ba'zi yordam kerak bo'lsa, u "manba sifatida qo'sh" bilan kerakli usul bilan manba faylini qo'shadi.

Bu shuni anglatadiki, ishga tushirish vaqtiga bog'liqliklar mavjud emas (kiritilgan faylga ehtiyoj bo'lmasa).

Tizim yaxshi ishlashga erishdi, ammo boshqalar kabi foyda keltiradigan dasturga ehtiyoj bor. Yuqori test sinovlarini o'z ichiga olgan rekvizit biz uchun yaxshi ishladi va testlar ham yaxshi foydalanish hujjatidir. Ochish biz uchun haligacha hal qilinmagan masala.

Kommunal loyiha bilan murakkabligi ob'ektlardagi ko'rinish darajasini belgilashdir. Boshqaruv qoidalari ichki va ma'lumotlar tuzilmalarining ommaviy bo'lishi kerak.

1
qo'shib qo'ydi

Yaqinda ushbu xizmat bilan tanishdim: Snip2Code ( http://www.snip2code.com ).

Sizning guruhingiz bilan (faqatgina kutubxonalar) faqat sizning qismlaringizni bo'lishishning qiziqarli usuli. Boshqa loyihalarda havola qilinadigan umumiy kutubxonalar yaratish uchun odatiy nuqtani buzadi va mening fikrimcha, bu qimmatli tafakkur.

Bundan tashqari, ko'pgina senariylarning umumiy kutubxonadan foydalanish oddiygina emas: misol uchun Singleton, Strategiya yoki Observer singari ba'zi dizayn namunalarini ko'rib chiqaylik. Bunday naqshlarni qo'llab-quvvatlash uchun kutubxonalar yaratishingiz mumkin, ammo hali 100% qamrov yo'q.

Aslini olganda, jamoa o'rtasida umumiy amaliyotni almashish uchun vosita bo'lishi kerak. Men Githubning so'zlarini ishlatishga harakat qilardim, lekin ularni (haqiqatan ham kambag'al) izlayapman va ularni boshqa jamoalar bilan emas, balki mening guruhim bilan baham ko'rishim mumkin emas ...

(Ogohlantirishlar: Men Snip2Code asoschisi hisoblanuvchisiman va men hammualliflarim bilan birgalikda - bir vaqtlar ham xuddi shunday fikrda edingiz: shuning uchun biz ushbu loyihani boshlashga qaror qildik!)

0
qo'shib qo'ydi