Önsöz
Bu gerçekten göz korkutucu bir iş ve ele alınması gereken çok şey var. Bu yüzden alçakgönüllülükle uygun takımlar ve eğitim materyali için işaretçilerle, ekibiniz için biraz kapsamlı bir rehber olarak öneriyorum.
Unutmayın: Bunlar kurallardır ve koşullara göre benimsenmesi, uyarlanması veya bırakılması anlamına gelir.
Dikkat: Bütün bunları bir takıma bir kerede bırakmak büyük olasılıkla başarısız olacaktır. Size en iyi ter için uygun olanı verecek elemanları seçmeye çalışmalı ve bunları birer birer yavaşça tanıtmalısınız.
Not: Tüm bunlar doğrudan G2 gibi Görsel Programlama Sistemleri için geçerli değildir. Bunlarla nasıl başa çıkılacağına dair daha ayrıntılı bilgi için , sondaki Ek bölümüne bakınız .
Sabırsızlar İçin Yönetici Özeti
- Bir katı proje yapısını tanımlayın :
- Proje şablonları ,
- kodlama kuralları ,
- Bilinen yapı sistemleri ,
- ve altyapınız ve araçlarınız için kullanım kılavuzu setleri .
- İyi bir SCM takın ve nasıl kullanacaklarını bildiklerinden emin olun.
- Onları teknolojileri için iyi IDE'lere yönlendirin ve nasıl kullanacaklarını bildiklerinden emin olun.
- Uygulamak kod kalite dama ve otomatik raporlama inşa sisteminde.
- Yapı sistemini sürekli entegrasyon ve sürekli denetim sistemleri ile birleştirin.
- Yukarıdakilerin yardımıyla, kod kalitesi "sıcak noktalar" ve refactor tanımlayın .
Şimdi uzun versiyon için ... Dikkat, kendinizi hazırlayın!
Sertlik (Genellikle) İyi
Sertlik genellikle size karşı çalışan bir güç olarak görüldüğü için bu tartışmalı bir görüşdür. Bazı projelerin bazı aşamaları için geçerlidir. Ancak bir kez yapısal bir destek, tahminde bulunmayan bir çerçeve olarak gördüğünüzde, boşa harcanan zaman ve emeğin miktarını büyük ölçüde azaltır. Senin için çalışsın, sana karşı değil.
Sertlik = Proses / Prosedür .
Yazılım geliştirme, kimyasal tesislerin veya fabrikaların el kitaplarına, prosedürlere, tatbikatlara ve acil durum kılavuzlarına sahip olma nedenleriyle aynı şekilde iyi işlem ve prosedürlere ihtiyaç duyar: kötü sonuçları önlemek, öngörülebilirliği artırmak, verimliliği en üst düzeye çıkarmak ...
Sertlik ölçülü geliyor!
Proje Yapısının Sertliği
Her proje kendi yapısına sahipse, siz (ve yeni gelenler) kaybedilirsiniz ve her açışınızda sıfırdan toplanmaları gerekir. Bunu profesyonel bir yazılım mağazasında istemiyorsunuz ve bunu laboratuarda da istemiyorsunuz.
Yapı Sistemlerinin Sertliği
Her proje farklı görünüyorsa, farklı inşa etme şansları da var
. Bir yapı, çok fazla araştırma veya fazla tahminde bulunulmamalıdır. Sen kanonik şeyi yapmak ve özellikleriyle ilgili endişelenmenize gerek yoktur edebilmek istiyorum: configure; make install
, ant
,
mvn install
, vb ...
Aynı yapı sistemini yeniden kullanmak ve zaman içinde gelişmesini sağlamak aynı zamanda tutarlı bir kalite seviyesi sağlar.
README
Projenin özelliklerini belirtmek için hızlı bir şekilde ihtiyacınız var ve varsa kullanıcı / geliştirici / araştırmacıyı incelikle yönlendirin.
Bu, yapı altyapınızın diğer bölümlerini de büyük ölçüde kolaylaştırır, yani:
Bu nedenle yapınızı (projeleriniz gibi) güncel tutun, ancak zamanla daha katı ve ihlalleri ve kötü uygulamaları bildirmede daha verimli olmasını sağlayın.
Tekerleği yeniden icat etmeyin ve daha önce yaptıklarınızı tekrar kullanın.
Önerilen Kaynaklar:
Programlama Dillerinin Seçiminde Sertlik
Özellikle araştırma ortamında, tüm ekiplerin (ve hatta tüm geliştiricilerin) aynı dili ve teknoloji yığınını kullanmalarını bekleyemezsiniz. Bununla birlikte, bir dizi “resmi olarak desteklenen” araç tanımlayabilir ve bunların kullanımını teşvik edebilirsiniz. Gerisi, iyi bir gerekçe olmadan, izin verilmemelidir (prototiplemenin ötesinde).
Teknoloji yığınınızı basit tutun ve gerekli becerilerin korunmasını ve genişliğini minimum düzeyde tutun: güçlü bir çekirdek.
Kodlama Sözleşmelerinin ve Kılavuzlarının Sertliği
Kodlama kuralları ve yönergeler, hem ekip olarak bir kimlik hem de ortak bir dil geliştirmenize olanak sağlayan şeydir . Kaynak dosyayı her açtığınızda , terra gizli durumuna geçmek istemezsiniz .
Hayatı zorlaştıran ya da yasaklayan eylemleri, basit tek ihlallere dayanarak taahhütlerin reddedilme derecesine kadar açık yapan saçma kurallar bir yüktür. Ancak:
iyi düşünülmüş bir temel kural, sızlanan ve düşünenlerin çoğunu elinden alır: hiç kimse hiçbir koşulda kırılmamalıdır;
ve bir dizi önerilen kural ek rehberlik sağlar.
Kişisel Yaklaşım: Kodlama sözleşmeleri söz konusu olduğunda saldırganım, bazıları nazi bile diyor , çünkü ekibim için tanınabilir bir stil olan lingua franca'ya inanıyoruz
. Bok kodu kontrol edildiğinde, bir Hollywood yıldızının yüzündeki soğuk bir yara gibi göze çarpıyor: bir incelemeyi ve bir işlemi otomatik olarak tetikliyor. Aslında, bazen uygun olmayan taahhütleri reddetmek için ön-işlemeli kancaların kullanımını savunmak kadar ileri gittim. Daha önce de belirtildiği gibi, aşırı çılgınca olmamalı ve üretkenlik yoluna gitmeli: onu sürmeli. Bunları yavaşça, özellikle başlangıçta tanıtın. Ancak, gerçek sorunlar üzerinde çalışamayacağınız hatalı kodu düzeltmek için çok fazla zaman harcamaktan daha çok tercih edilir.
Bazı diller bile tasarım gereği bunu zorlar:
- Java, onunla yazabileceğiniz donuk bok miktarını azaltmayı amaçlıyordu (şüphesiz birçokları bunu başarabiliyordu).
Python'un girintili blok yapısı bu anlamda başka bir fikirdir.
Tarzın doğasında var olan gofmt
her türlü tartışmayı ve çabayı ( ve ego !! ) tamamen ortadan kaldıran aracıyla git : gofmt
taahhüt etmeden önce koş .
Kod çürümesinin kaymayacağından emin olun . Kod kuralları , sürekli entegrasyon ve sürekli denetim , çift programlama ve kod incelemeleri bu şeytana karşı cephaneliğinizdir.
Ayrıca, aşağıda göreceğiniz gibi, kod dokümantasyondur ve bu, sözleşmelerin okunabilirliği ve açıklığı teşvik ettiği başka bir alandır.
Dokümantasyonun Sertliği
Belgeler kodla el ele gider. Kodun kendisi dokümantasyondur. Ancak bir şeylerin nasıl inşa edileceğine, kullanılacağına ve korunacağına dair kesin talimatlar olmalıdır.
Dokümantasyon için tek bir kontrol noktası kullanmak (bir WikiWiki veya DMS gibi) iyi bir şeydir. Projeler için boşluklar yaratın, daha rastgele şakalar ve deneyler için boşluklar yaratın. Tüm alanların ortak kuralları ve kuralları yeniden kullanmasını sağlayın. Bunu takım ruhunun bir parçası yapmaya çalış.
Kodlama ve takımlama için geçerli tavsiyelerin çoğu belgeler için de geçerlidir.
Kod Açıklamalarında Sertlik
Yukarıda da belirtildiği gibi kod yorumları da belgelerdir. Geliştiriciler kodlarıyla ilgili duygularını ifade etmeyi sever (bana sorarsanız, çoğunlukla gurur ve hayal kırıklığı). Bu nedenle, daha resmi bir metin parçası daha az patlayıcı ya da drama ile aynı anlamı taşıdığı zaman, yorumlarda (ya da hatta kodlarda) belirsiz terimlerle bunları ifade etmeleri alışılmadık bir durum değildir. Eğlenceli ve tarihi nedenlerden dolayı birkaç kişinin kaymasına izin vermek sorun değil: bu aynı zamanda bir ekip kültürü geliştirmenin bir parçası . Ancak, herkesin neyin kabul edilebilir ve neyin kabul edilmediğini bilmesi ve bu yorum gürültüsünün tam da şu olması önemlidir:
gürültü .
Taahhüt Kayıtlarında Sertlik
Taahhüt kütükleri, SCM'nizin yaşam döngüsünün can sıkıcı ve işe yaramaz bir "adımı" değildir: zamanında eve gitmek veya bir sonraki göreve devam etmek ya da öğle yemeği için ayrılan arkadaşlarla yetinmek için atlamazsınız. Önemlidir ve (çoğu) iyi şarap gibi, zaman geçtikçe daha değerli hale gelirler. Yani onları doğru yapın. İş arkadaşlarının devasa işler veya açık olmayan saldırılar için tek gömlek yazdığını görünce şaşırdım.
Taahhütler bir nedenden dolayı yapılır ve bu nedenle ISN'T her zaman kodunuz ve girdiğiniz bir satırlık işlem kaydıyla açıkça ifade edilir. Bundan daha fazlası var.
Her kod satırının bir hikayesi ve bir geçmişi vardır . Farklılıklar onun tarihini anlatabilir, ama onun hikayesini yazmalısın.
Bu satırı neden güncelledim? -> Arayüz değiştiği için.
Arayüz neden değişti? -> Çünkü L1 tanımlayan kütüphanesi güncellendi.
Kütüphane neden güncellendi? -> Çünkü F özelliği için gerekli olan L2 kütüphanesi, L1 kütüphanesine bağlıydı.
Ve X özelliği nedir? -> Sorun izleyicideki görev 3456'ye bakın.
Bu benim SCM seçeneğim değil ve laboratuarınız için de en iyisi olmayabilir; ancak Git
bu hakkı alır ve kullanarak, daha çoğu diğer SCMS sistemlere göre iyi günlükleri yazmak için zorlar çalışır short logs
ve
long logs
. Görev kimliğini bağlayın (evet, birine ihtiyacınız var) ve izin için genel bir özet bırakın shortlog
ve uzun günlüğünde genişletin: Değişikliğin hikayesini yazın .
Bu bir günlük: Güncellemeleri takip etmek ve kaydetmek için burada.
Küçük Kural: Daha sonra bu değişiklik hakkında bir şey arıyorsanız, günlüğünüzün sorunuzu yanıtlaması olası mı?
Projeler, Dökümanlar ve Kodlar ALIVE
Onları senkronize tut, aksi halde artık bu simbiyotik varlığı oluşturmazlar. Sahip olduğunuzda harikalar yaratıyor:
- SCM'nizdeki günlükleri temizleyin, sorun izleyicinizdeki görev kimlikleriyle bağlantı kurun
- bu izleyicinin biletlerinin kendilerinin SCM'nizdeki değişikliklere (ve muhtemelen CI sisteminizdeki yapılara) bağlandığı,
- ve bunlara bağlanan bir dokümantasyon sistemi.
Kod ve dokümantasyon uyumlu olmalıdır .
Testte Sertlik
Başparmak Kuralları:
- Herhangi bir yeni kod (en azından) birim testleri ile gelmelidir.
- Herhangi bir yeniden düzenlenmiş miras kodu birim testleriyle birlikte gelir.
Tabii ki, bu ihtiyaç:
- aslında değerli bir şeyi test etmek (ya da zaman ve enerji kaybıdır),
- iyi yazılmış ve yorumlanmış olması (giriş yaptığınız diğer kodlar gibi).
Ayrıca belgeler ve kodunuzun sözleşmesinin ana hatlarını çizmeye yardımcı olurlar. Özellikle TDD kullanıyorsanız . Yapmasanız bile, iç huzurunuz için onlara ihtiyacınız var. Bunlar, yeni kod (bakım veya özellik) eklediğinizde ve kod çürümesi ve çevresel arızalara karşı korunmak için gözetleme kuleniz olduğunda emniyet ağınızdır.
Elbette, daha ileri gitmeli ve entegrasyon testlerini ve
düzelteceğiniz her tekrarlanabilir hata için regresyon testlerini yaptırmalısınız .
Araç Kullanımında Sertlik
Ara sıra geliştirici / bilim adamının kaynakta yeni bir statik denetleyici denemek, bir başkasını kullanarak bir grafik veya model oluşturmak veya bir DSL kullanarak yeni bir modül uygulamak istemesi sorun değil. Ancak, tüm ekip üyelerinin bilmesi ve kullanması beklenen kanonik bir araç seti varsa en iyisidir .
Bunun ötesinde, üyelerin istediklerini TÜM oldukları sürece kullanmalarına izin verin:
- üretken ,
- Düzenli olarak yardım gerektiren DEĞİL
- Genel altyapınıza düzenli olarak ayar yapmamak ,
- Altyapınızı bozmamak (kod, yapı sistemi, dokümantasyon gibi ortak alanları değiştirerek…),
- Başkalarının çalışmalarını etkilememek ,
- İstenen herhangi bir görevi zamanında yapmak için ABLE .
Bu durumda değilse, varsayılanlara geri dönmelerini sağlayın.
Sertlik - Çok Yönlülük, Uyarlanabilirlik, Prototiplendirme ve Acil Durumlar
Esneklik iyi olabilir. Birinin ara sıra kesmek, çabuk kirletmek için bir yaklaşım veya işi yapmak için favori bir evcil hayvan aracı kullanmasına izin vermek
iyidir. ASLA bir alışkanlık haline gelmesine izin vermeyin ve ASLA bu kodun desteklenecek gerçek kod temeli olmasına izin vermeyin.
Takım Ruhu Önemlidir
Codebase'inizde Gurur Duygusu Geliştirin
- Kodda bir Gurur duygusu geliştirin
- Duvar panolarını kullan
- Sürekli bir entegrasyon oyunu için lider kurulu
- sorun yönetimi ve hata sayımı için duvar panoları
- Bir sorun izci / hata izci kullanın
Suçlama Oyunları önlemek
- Sürekli Entegrasyon / Sürekli Muayene oyunlarını kullanın: iyi huylu ve üretken rekabeti teşvik eder .
- Kusurları takip edin: bu sadece ev temizliğidir.
- DO temel nedenlerinin belirlenmesi : bu sadece gelecek geçirmezlik işlemleri var.
- AMA suçu atamayın : bu karşı verimli.
Bu Kod Hakkında, Geliştiriciler Hakkında Değil
Geliştiricilere kodlarının kalitesinin bilincinde olun, ancak onları eleştirilemeyen, kendilerinin bir uzantısı olarak değil, kodu bağımsız bir varlık olarak görmelerini sağlayın.
Bu bir paradoks: Sağlıklı bir iş yeri için ego'suz programlamayı teşvik etmeniz, ancak motivasyon amaçlı egoya güvenmeniz gerekiyor.
Bilim Adamı'ndan Programcıya
Değer vermeyen ve kodla gurur duyan insanlar iyi kod üretmezler. Bu özelliğin ortaya çıkması için ne kadar değerli ve eğlenceli olabileceğini keşfetmeleri gerekiyor. Saf profesyonellik ve iyi şeyler yapma arzusu yeterli değil: tutku gerektiriyor. Bu yüzden bilim adamlarınızı programcılara dönüştürmeniz gerekiyor
(büyük anlamda).
Birisi, bir projede ve kodunda 10 ila 20 yıl sonra herhangi birinin bağlılık hissedeceği yorumunda bulundu. Belki yanılıyorum ama kodun kendisiyle ya da yazma eylemiyle değil, kodun sonuçlarından, işinden ve mirasından gurur duyduğunu varsayıyorum.
Deneyimden, çoğu araştırmacı kodlamayı bir gereklilik olarak ya da en iyi ihtimalle eğlenceli bir dikkat dağıtımı olarak görüyor. Sadece çalışmasını istiyorlar. Zaten oldukça ustalaşmış ve programlamaya ilgi duyanlar, en iyi uygulamaları benimsemeye ve teknolojileri değiştirmeye ikna etmek için çok daha kolaydır. Onları yarıya kadar götürmelisin.
Kod Bakım, Araştırma Çalışmalarının Bir Parçasıdır
Kimse boktan araştırma makaleleri okumuyor. Bu nedenle, hakem tarafından gözden geçirilir, prova okur, inceltilir, yeniden yazılır ve tekrar yayınlanmaya hazır olana kadar tekrar tekrar onaylanır. Aynı tez ve kod temeli için de geçerlidir !
Bir kod tabanının sürekli yeniden yapılandırılması ve yenilenmesinin kod çürümesini önlediğini ve teknik borçları azalttığını ve işin diğer projeler için yeniden kullanılmasını ve uyarlanmasını kolaylaştırdığını açıkça belirtin.
Neden Bütün Bu ??!
Neden yukarıdakilerin hepsiyle uğraşıyoruz? İçin kod kalitesi . Yoksa
kalite kodu mu?
Bu kurallar, ekibinizi bu amaca doğru yönlendirmeyi amaçlar. Bazı yönler, basitçe onlara yolu göstererek ve yapmalarına izin vererek (ki bu çok daha iyi) ve diğerleri onları ele geçirir (ancak insanları bu şekilde eğitir ve alışkanlıklar geliştirirsiniz).
Amacın ne zaman erişilebilir olduğunu nereden biliyorsun?
Kalite Ölçülebilir
Her zaman kantitatif değil, ancak ölçülebilir . Bahsedildiği gibi, ekibinizde bir gurur duygusu geliştirmelisiniz ve ilerlemeyi ve iyi sonuçları göstermek kilit önemdedir. Kod kalitesini düzenli olarak ölçün ve aralıklar arasındaki ilerlemeyi ve bunun nasıl önemli olduğunu gösterin. Ne yapıldığını ve işlerin nasıl daha iyi veya daha kötü hale getirildiğini yansıtmak için retrospektifler uygulayın.
Sürekli inceleme için harika araçlar var . Sonar , Java dünyasında popüler bir markadır , ancak herhangi bir teknolojiye adapte olabilir; ve diğerleri var. Kodunuzu mikroskop altında tutun ve sinir bozucu sinir bozucu böcek ve mikropları arayın.
Peki ya Kodum Zaten Berbatsa?
Yukarıdakilerin tümü Never Land'e yapılan bir gezi gibi eğlenceli ve sevimlidir, ancak zaten (buharlı ve kokulu bir yığın) şifre koduna ve değiştirmek konusunda isteksiz bir ekibiniz olduğunda yapmak o kadar kolay değildir.
İşte sır: İşte bir yerden başlaman gerek .
Kişisel fıkra: Bir projede, başlangıçta 650.000+ Java LOC, 200.000+ JSP, 40.000+ JavaScript LOC ve 400+ MB ikili bağımlılıktan oluşan bir kod temeli ile çalıştık.
Yaklaşık 18 ay sonra, 100 MB'ye kadar bağımlılıklarla 500.000 Java LOC (EN TEMİZ TEMİZ) , 150.000 satır JSP ve 38.000 JavaScript LOC (ve bunlar artık SCM'mizde değil!).
Bunu nasıl yaptık? Yukarıdakilerin hepsini biz yaptık. Veya çok denedim.
Bu bir ekip işidir, ama biz yavaş yavaş enjekte aceleyle ederken, Ürünümüzün kalp atışlarını takip etmek bizim süreç yönetmelik ve araçları acımasız "yağ" Uzak: Biz tüm gelişimini durmadı ... bok kodu, yararsız bağımlılıkları bunu yapın: Kod temeli üzerinde çıldırmakta özgür olduğumuz ve parçalara ayırdığımız zamanlar göreceli barış ve sessizlik dönemleri var, ancak çoğu zaman aldığımız her fırsatta bir "gözden geçirme ve refaktör" moduna geçerek : inşaatlar sırasında, öğle yemeği sırasında, hata onarım çalışmaları sırasında, cuma öğleden sonraları ...
Bazı büyük "işler" vardı ... Yapı sistemimizi devasa bir 8500+ XML LOC kurulumundan çok modüllü bir modüle geçirmek Maven yapı onlardan biriydi. Sonra biz vardı:
- kesin modüller (veya en azından zaten çok daha iyiydi ve hala gelecek için büyük planlarımız var),
- otomatik bağımlılık yönetimi (kolay bakım ve güncellemeler için ve gereksiz depremleri kaldırmak için),
- daha hızlı, daha kolay ve tekrar üretilebilir yapılar,
- kalite ile ilgili günlük raporlar.
Hatalar için yüzeyini azaltmak Kodunuzdaki aşağı Google Guava ve Apache Commons ince ve ve: Başka biz bağımlılıkları azaltmak için çalışıyor olsa bile, "yarar alet kemerleri" nin enjeksiyondu sizin kod çok.
Ayrıca BT departmanımızı yeni araçlarımızı (JIRA, Fisheye, Crucible, Confluence, Jenkins) kullanmanın yerindekilerden daha iyi olduğuna ikna ettik. Hala küçümsemiş olduğumuz bazılarıyla (QC, Sharepoint ve SupportWorks ...) başa çıkmamız gerekiyordu, ancak biraz daha fazla alan kalmasıyla genel olarak geliştirilmiş bir deneyimdi.
Ve her gün, artık sadece tamir ve yenilemekle ilgilenen bir ila onlarca taahhüt arasında bir kandırmaca var. Bazen bir şeyler kırarız (birim testlerine ihtiyaç duyarsınız ve bunları yeniden ateşlemeden önce onları daha iyi yazarsınız ), ancak genel olarak moralimiz için VE ürünün ürün için yararı çok büyük olmuştur. Her seferinde bir kod kalitesi yüzdesinin bir kısmını elde ediyoruz. Ve arttığını görmek eğlenceli !!!
Not: Yine, yeni ve daha iyi şeylere yer açmak için rijitliğin sallanması gerekir. Hedefimde, BT departmanımız kısmen bize bazı şeyleri empoze etme konusunda haklıdır ve diğerleri için yanlıştır. Ya da belki haklılardı . Her şey değişir. Verimliliğinizi artırmanın daha iyi bir yolu olduğunu kanıtlayın. Deneme çalışmaları ve prototipler bunun için burada.
Süper Gizli Artımlı Spagetti Kodu Mükemmel Kalite için Refactoring Döngüsü
+-----------------+ +-----------------+
| A N A L Y Z E +----->| I D E N T I F Y |
+-----------------+ +---------+-------+
^ |
| v
+--------+--------+ +-----------------+
| C L E A N +<-----| F I X |
+-----------------+ +-----------------+
Alet kemerinizde bazı kaliteli aletlere sahip olduğunuzda:
Kodunuzu kalite kontrolleri ile analiz edin.
Linerler, statik analizörler veya neyin var.
Belirleyin senin kritik noktaları VE düşük asılı meyve .
İhlallerin ciddiyet düzeyleri vardır ve çok sayıda yüksek ciddiyeti olan büyük sınıflar büyük bir kırmızı bayraktır: radyatör / ısı haritası türlerinde "sıcak noktalar" olarak görünürler.
Önce sıcak noktaları düzeltin .
En yüksek işletme değerine sahip olduklarından kısa bir sürede etkilerinizi en üst düzeye çıkarır. İdeal olarak, kritik ihlaller, ortaya çıktıkları anda, olası güvenlik açıkları veya çarpma nedenleri olduğu ve bunlara neden olma riski taşıdığı (ve sizin durumunuzda laboratuar için kötü performans) riski yüksek olduğu için, ele alınmalıdır.
Temizleyin ile düşük seviye ihlallerini otomatik kod temeli süpürür .
Sinyal-gürültü oranını iyileştirir, böylece göründüğü gibi radarda önemli ihlaller görebilirsiniz. İlk başta, eğer başlarına hiç bakılmadıysa ve kod tabanınız vahşi doğada serbest bırakıldıysa, genellikle ilk başta küçük ihlaller ordusu olur. Gerçek bir “risk” sunmazlar ancak kodun okunabilirliğini ve bakımını bozarlar. Bir görev üzerinde çalışırken tanıştığınız gibi düzeltin ya da mümkünse otomatik kod tarama ile büyük temizlik görevlerinde bulunun. İyi bir test takımınız ve entegrasyon sisteminiz yoksa, büyük otomatik tarama işlemlerine dikkat edin. İş arkadaşlarınızla, sıkıntıyı en aza indirmek için onları çalıştırmak için doğru zaman konusunda anlaştıklarından emin olun.
Memnun kalana kadar tekrarlayın .
Hangi, ideal olarak, eğer hala aktif bir ürün ise, asla olmamalısınız: gelişmeye devam edecek.
İyi Ev Tutma için Hızlı İpuçları
Düzeltme modundayken , müşteri destek isteğine göre:
- İsteyerek yenilerini tanıtabileceğiniz için, genellikle diğer sorunları çözme konusunda ÇALIŞMAMAK en iyi yöntemdir .
- Git SEAL tarzı: içeri gir, böceği öldür, dışarı çık ve yamanı gönder. Bu cerrahi ve taktik bir grev.
Ancak diğer tüm durumlarda , bir dosya açarsanız, aşağıdakileri yapmak sizin görevinizdir:
- Kesinlikle: gözden (notlar, dosya sorunu raporlarını almak) bunu,
- belki: temizle (stil temizleme ve küçük ihlaller),
- İdeal: refactor onu (büyük bölümleri ve onların komşularını yeniden düzenlemek).
Sadece bir hafta boyunca dosyadan dosyaya harcamaktan kaçınmayın ve birden fazla özellik ve modüle yayılan binlerce düzeltmeden oluşan büyük bir değişiklik kümesi ile bitirin - bu gelecekteki takibi zorlaştırır. Koddaki bir sorun = izleyicinizde bir bilet. Bazen, bir değişiklik birden fazla bileti etkileyebilir; ama eğer çok sık olursa, muhtemelen yanlış bir şeyler yapıyorsunuz demektir.
Ek: Görsel Programlama Ortamlarını Yönetme
Ismarlama Programlama Sistemlerinin Duvarlı Bahçeleri
OP G2 gibi çoklu programlama sistemleri farklı canavarlardır ...
Kaynak yok "Kod"
Genellikle, kaynak "kod" unuzun metinsel temsiline erişiminizi sağlamazlar: özel bir ikili biçimde saklanabilirler veya belki de metin biçiminde saklarlar, ancak bunları sizden saklarlar. Ismarlama grafiksel programlama sistemleri, araştırma laboratuvarlarında, tekrarlayan veri işleme iş akışlarının otomasyonunu basitleştirdiğinden nadir değildir.
Takım yok
Onların dışında, bu. Genellikle programlama ortamları, kendi hata ayıklayıcıları, kendi tercümanları, kendi dokümantasyon araçları ve formatları tarafından kısıtlanırsınız. En
sonunda, biçimlerini değiştirebilecek kadar motive olmuş birinin çıkarlarını yakalayıp, dış araçları geliştirmeleri dışında - duvarlar bahçelidir .
Belge Eksikliği
Oldukça sık, bunlar oldukça kapalı ortamlarda kullanılan niş programlama sistemleridir. Bunları kullanan insanlar sık sık NDA'ları imzalar ve asla yaptıkları hakkında konuşmazlar. Onlar için programlama toplulukları nadirdir. Yani kaynaklar azdır. Resmi referansınla sıkışıp kaldın ve o kadar.
İronik (ve genellikle sinir bozucu) bit, bu sistemlerin yaptığı her şeye açıkça ana ve genel amaçlı programlama dilleri kullanarak ve muhtemelen daha verimli bir şekilde ulaşılabiliyordu. Fakat daha derin bir programlama bilgisi gerektirir, oysa biyologunuzdan, kimyagerinizden veya fizikçinizden (birkaç kişiyi) programlama hakkında yeterince şey bilmesini bekleyemezsiniz ve hatta uygulamak (ve sürdürmek) için zamana (ve arzuya) sahip olmak için daha azını beklersiniz. karmaşık sistemler, uzun ömürlü olabilir veya olmayabilir. Aynı sebepten dolayı DSL kullanıyoruz, bu özel programlama sistemlerimiz var.
Kişisel Anekdot 2:Aslında bunlardan biri üzerinde çalıştım. OP'nin isteği ile bağlantı kurmadım, ancak projem birbirine bağlı büyük veri işleme ve veri depolama yazılımı grubuydu (öncelikle biyo-bilişim araştırması, sağlık ve kozmetik için, aynı zamanda iş dünyası için). istihbarat veya herhangi bir türde büyük miktarda araştırma verisinin izlenmesini ve veri işleme iş akışlarının ve ETL'lerin hazırlanmasını gerektiren herhangi bir alan). Bu uygulamalardan biri oldukça basit bir şekilde olağan çan ve ıslık kullanan bir görsel IDE idi: sürükle ve bırak arayüzleri, sürümlendirilmiş proje çalışma alanları (meta veri depolaması için metin ve XML dosyalarını kullanarak), heterojen veri kaynaklarına çok sayıda takılabilir sürücü ve görsel N veri kaynağından ve sonunda M'den dönüştürülmüş çıktılar üretmek için boru hatları tasarlamak üzere tuval tasarlamak, ve olası parlak görselleştirmeler ve karmaşık (ve etkileşimli) çevrimiçi raporlar. Kullanıcıların ihtiyaçlarına göre uyarlanmış bir sistem tasarlama bahanesi altında bir miktar NIH sendromundan muzdarip olan tipik ısmarlama görsel programlama sisteminiz.
Ve beklediğiniz gibi, güzel bir sistem, ihtiyaçları için oldukça esnek olmasına rağmen bazen biraz üstünden geçiyor, böylece "neden komut satırı araçlarını kullanmıyorsunuz?" Diye merak ediyorsunuz ve ne yazık ki her zaman orta ölçekli Büyük projeler üzerinde çalışan ekipler, onu farklı "en iyi" uygulamalarla kullanan pek çok farklı kişiye.
Harika, biz mahvolduk! - Biz bu konuda ne yapacağız?
Sonunda, yukarıdakilerin hepsi hala geçerli. Programlamanın çoğunu daha yaygın araç ve dilleri kullanmak için bu sistemden çıkaramazsanız, “sadece” sisteminizin kısıtlarına uyarlamanız gerekir.
Sürüm Oluşturma ve Depolama Hakkında
Sonunda, olabildiğince hemen her zaman versiyon şeyler, hatta en kısıtlı ve duvarlı çevre ile. Çoğu zaman değil, bu sistemler hala kendi sürümleri ile birlikte gelir (ne yazık ki genellikle oldukça basittir ve sadece önceki fotoğrafları saklamak için çok fazla görünürlük olmadan önceki sürümlere dönmeyi teklif eder). Seçtiğiniz SCM'niz gibi diferansiyel değişiklikler kullanmıyor ve aynı anda değişiklik yapan birden fazla kullanıcı için uygun değil.
Fakat yine de, eğer böyle bir işlevsellik sağlıyorlarsa, belki de sizin çözümünüz yukarıdaki sevgili endüstri standardı yönergelerimizi takip etmek ve onları bu programlama sistemine aktarmaktır !!
Depolama sistemi bir veritabanıysa, büyük olasılıkla dışa aktarma işlevlerini gösterir veya dosya sistemi düzeyinde yedeklenebilir. Özel bir ikili format kullanıyorsa, belki de sadece ikili veri desteği olan bir VCS ile versiyonlamayı deneyebilirsiniz. İnce ayarlı bir kontrole sahip olmayacaksınız, ama en azından felaketlere karşı sırtınızı örttünüz ve bir dereceye kadar felaket kurtarma uyumluluğuna sahip olacaksınız.
Test hakkında
Testlerinizi platformun içinde uygulayın ve düzenli yedekleme yapmak için harici araçları ve arka plan işlerini kullanın. Büyük olasılıkla, bu testleri, bu programlama sistemi ile geliştirilen programları ateşleyeceğiniz şekilde başlatırsınız.
Elbette, bu bir hack işidir ve kesinlikle "normal" programlama için ortak olanın standardına kadar değildir, ancak fikir profesyonel yazılım geliştirme sürecinin bir kesimini sürdürmeye çalışırken sisteme uyum sağlamaktır.
Yol Uzun ve Dik ...
Her zaman olduğu gibi niş ortamlarda ve ısmarlama programlama sistemlerinde olduğu gibi ve yukarıda ortaya koyduğumuz gibi, garip biçimlerle, yalnızca sınırlı (veya tamamen yetersiz) bir olasılıkla beceriksiz araç kümesiyle ve bir topluluğun yerine bir boşlukla başa çıkacaksınız.
Tavsiye: Yukarıdaki yönergeleri ısmarlama programlama sisteminizin dışında mümkün olduğunca uygulamaya çalışın. Bu, uygun destek ve topluluk sürüşüne sahip "ortak" araçlara güvenebilmenizi sağlar.
Geçici Çözüm: Bu bir seçenek olmadığında, bu genel çerçeveyi "kutunuza" uyarlamaya çalışın. Buradaki amaç, programlama sisteminizin üzerine endüstri standardı en iyi uygulamaların bu planını kaplamak ve en iyisini yapmaktır. Tavsiye hala geçerlidir: yapıyı ve en iyi uygulamaları tanımlayın, uygunluğu teşvik edin.
Ne yazık ki, bu, dalmanıza ve muazzam miktarda bacak işi yapmanız gerekebileceği anlamına gelir. Yani...
Ünlü Son Sözler ve Alçakgönüllü İstekler:
- Yaptığınız her şeyi belgeleyin .
- Deneyiminizi paylaşın .
- Kaynak yazın herhangi bir aracı açın.
Bunların hepsini yaparak, yapacaksınız:
- sadece benzer durumlarda insanlardan destek alma şansınızı arttırmakla kalmaz,
- aynı zamanda diğer insanlara yardım sağlar ve teknoloji yığıtınızın etrafındaki tartışmaları teşvik eder.
Kim bilir, yeni, canlı bir Obscure Language X topluluğunun başında olabilirsiniz . Hiçbiri yoksa, başla!
Belki içerde güzeldir , fakat şu ana kadar kimsenin ipucu yok, bu çirkin duvarı yıkmaya yardım et ve başkalarının gözetlemesine izin ver!