Verdiğiniz en pişman tasarım veya programlama kararı? [kapalı]


57

Ne tür tasarım kararları aldığınızı ve bunların nasıl geri teptiğini duymak isterim. Kötü bir tasarım kararından dolayı, o kötü kararı sonsuza kadar desteklemek zorunda kaldım (ayrıca bir rol aldım). Bu bana, tek bir tasarım hatasının sonsuza dek musallat olacağının farkına varmamı sağladı. Daha tecrübeli insanlardan ne tür hatalar yaşadıklarını ve onlardan ne öğrendiklerini öğrenmek istiyorum.

Bunun, bu kararları tekrar etmemelerine yardımcı olarak diğer programcılara çok yardımcı olacağından eminim.

Deneyiminizi paylaştığınız için teşekkür ederiz.


19
SO çok fazla zaman harcamak !! ;)
Mitch Wheat

6
@George: İlk bağlantınız, bu konu ile teğetsel olarak ilişkili olabilen, aşırı mühendislikle ilgili gibi görünüyor, fakat bir kopyası değil. İkinci ve son bağlantılar, hiçbiri bu konunun kopyası olmayan kodlama hataları ve yönetim hatalarını içerir.
Juliet

1
Bu muhtemelen bir topluluk wiki'sinde yapılmalıdır (yayını düzenlerken bir kutu vardır).

3
Keşke kapanmaya karşı oy kullanmanın bir yolu olsaydı. Kapatmayı oyla?
Kieveli

5
Tüm kapalı seçmenlerin nesi var? Peki ya bir CW değilse, soruyu cevaplamak için askerin bir miktar oy almasına izin verin. Bu konuyla gerçekten ilgileniyorum. CW'nin öznel olarak iyi bir soru sormasına izin vermeyin. Sheesh, SO, "CW THIS" çığlıkçılarıyla dolu.
syaz

Yanıtlar:



56

"
Sonra yapacağım" "Sonra" asla gelmez.


8
Daha sonra asla gelmez.

Asla yapmaz.

Şu anda yapacak vaktiniz yoksa, daha sonra düzeltmek için zamanınız olacağını düşündüren nedir?

4
Biz buna "yineleme asla"
diyoruz

10
Geçici bir çözüm kadar kalıcı bir şey yoktur.
dietbuddha


44

Bir uygulamada yapılandırılabilirlik güzel. Yapılandırılabilirliğin çok fazla olması, kullanımı ve bakımı için bir kabustur.


2
Evet. Doğru. Her şeyi yapılandırılabilir hale getirmek ve patronuna bir daha asla tek bir kod satırını değiştirmek zorunda kalmayacağımızı söylemek idealizmdir.

1
Talihsiz kullanıcı, proje yönetimimiz için sınırsızca yapılandırılabilir sistemlerden birine sıkıştı, ancak yapabilseydim, sizi milyonlarca kez affedeceğimi söyleyebilirim.
HLGEM

Yapılandırmadaki aşırı esneklik genellikle çalışma zamanında rasgele kod yürütemediğinizden dolayı her şeyi önceden tahmin etmeniz gerekir.

Buna “hardcoding” yerine “spoftcoding” denir
deadalnix

42

Hatalarımdan birinden, DB normalleşmesinin kör bir şekilde izlenmemesi gerektiğini öğrendim. Yapabilir ve bazı durumlarda masalarınızı düzleştirmeniz GEREKİR.

Çok sayıda tabloyu (modeller üzerinden) yönetmeyi bıraktım ve performans, tablolar için biraz düzleştiği kadar iyi değildi.


5
Daha fazla hemfikir olamadım ... Ben bir yazılım mühendisiyim ve her zaman normalleşmemiz söylendi. Ne boktan bir bok. Sadece öğretmenlerin öğrenemediği, gerçekten karmaşık ve performansa bağlı DB'lerle çalışmayı denediği içindi.

8
Normalleşmenin elbette çok olumlu olabileceğini de ekleyebilirim.

12
Programcıların yetersiz sebeplerle denormalize etmek için çok hızlı olduğunu düşünüyorum, ancak evet, normalleşme kurallarına slavca bağlılık büyük bir hata. Genel olarak, yazılım geliştirmedeki en büyük sıkıntılarımdan biri, biri "X yapmalıyız" derken ve bunun neden olacağı tüm problemleri belirttiğimde, "Bu alakasız. bu nedenle, X'i her zaman istisnalar olmadan yapmalıyız. ”

4
Normalleşmeye olan yaklaşımım her zaman basit. Her zaman normalleşirim, ancak küçük düzleştirmede potansiyel bir performans artışı görüyorsam - her zaman test eder ve kıyaslarım ve çoğu durumda düzleştirmek için para öderim.
Eimantas

7
Ancak normalleştirme FUN! :) Ciddiyim, veri yapıları tasarlamayı seviyorum. Söyleyeceğim şey normalize edilmiş bir şemayı normalize etmek kolay olsa da bunun tersi geçerli değil. Onları kırmadan önce kuralları bilmen gerekiyor.

36

Durumlar, vb. İçin veritabanlarında tek bir karakter kullanmak Hiç bir şey ifade etmiyor, daha uzun bir char () veya nvarchar2 () kullanmanın ek yükü ağa göre daha küçük ve herhangi bir SQL çağrısı tarafından yapılan ayrıştırma işlemine göre minik oldukça karışık, ya da tükenmek üzere (durumlar için değil, başka şeyler için). Sadece okunabilir versiyonunu okumak ve Java modelinizde (benim durumumda) eşleşen değerlere sahip bir numaraya sahip olmak çok daha iyi.

Sanırım bu gereksiz bir erken ve kör optimizasyon şekli. Tek bir karakter kullanmak sanki bugünlerde dünyayı kurtaracak. Y / N'den başka, boolean / bit desteklemeyen veritabanlarındaki booleanlar.


+1 Bu konuyla ilgili bir toplantı yaptık. Aynı sonuca vardık.
APC

Müşteriniz bu kısaltmalarla çalışıyorsa ve onları terk etmek istemiyorsa ne olacak?

Mevcut sistemler için uyumlu olmanız gerekir (elbette <code> MyEnum fromChar (char c) </code> yöntemiyle). Yeni tasarımlar için oraya gitme!

Bazı veritabanları hem küçük hem de okunaklı olan ve aynı zamanda güzel bir şekilde beklenmedik değerleri koruyan kodları destekler. Mümkünse, bunları kullan.
Karl Bartel

2
Neredeyse kötü: MS SQL Server'da BIT tipini kullanarak, bir dizinin parçası olamayacağını keşfetmeden önce.
finnw

32

Uygun bir Veri Erişim Katmanı geliştirmemek ve kodumun her yerinde sql'ye sahip olmak, sadece "hızlı" bir şeyler hazırlayıp çalıştırmak için. Daha sonra, proje genişlemeye başladıkça ve gereksinimler değiştikçe kabus oldu. O sırada DAL'ın ne olduğunu bilmiyordum.

... bunu yaptığım için mutluyum, yine de 20 yaş ve üstü "tecrübesi" olan programcılar görüyorum.


16
Nerede okuduğumu hatırlayamıyorum, ancak 20 yıllık deneyim ile 19 yıllık tekrarlanan bir yıllık deneyim arasında bir fark var.
CaffGeek

@Chad: Joel Spolsky'nin yazılarında bir yerdeydi.

+1: Evet. Ve bu SQL'e bağlı tüm bu mantığı yeniden düzenlemeyi deneyin ... Satır içi, serbest biçimli SQL veya depolanmış işlemler olsun. [Evet - bu kutsal savaştan korkmuyorum.]
Jim G.

26

Aynı projede Mimar, Geliştirici ve PM olabileceğimi düşünüyorum.

Bir gecede 3 saat uyuma 2 ay bana bunu yapamayacağımı öğretti.


15
Öyleyse çok uyuma! oh, bekle ... demek ki normal değil ... ?? Hmm, bu projede bana başka insanlar bulmalıyım ...
AviD


21

Java IDE yazmak için Microsoft Foundation Classes (MFC) seçimi.


3
Owwww. Bu beynimi acıtır.
Greg D

2
Bu 1999'da kötü bir karar değildi. AWT o zamanlar çirkin ve yavaştı.
01:

finnw - iyi, en azından hala çirkin!
Niklas H,

20

Bu benim kararım değildi (şirkete daha sonra katıldım) ama çalıştığım bir yerde tüm günlük mesajlarını çevirmek de dahil olmak üzere biraz fazla i18n aldı.

Sonuçlar:

  • Yeni günlük eklemek için daha acı verici
  • Çeviri için daha fazla maliyet
  • Günlükleri daha sonra okumak zor

Hata.


Burada bazı i18n yapıyorum ve kullanıcıya neyin gittiğini ve kayıtların neye girdiğini bulmaya çalışıyorum. Kullanıcıya yönelik tüm çıktıların yerelleştirilebilir olmasını istiyorum, ancak günlüklerin aynı kalmasını istiyorum. Bu süreçte, bir istisnanın nereye gittiğini bulmaktan daha fazla şey yapmak zorundayım.
David Thornley

1
Tahmin edeyim, Amerikalı? Olmazsa, sadece ingilizce konuşabiliyor musun? Yeni günlük girişlerinin ingilizce olarak yapıldığı uluslararasılaştırmayı kullanın, başka bir dil varsa, kullanıcıların dilini görüntüleyin. İPUCU: Hata kodlarını kullanmak burada yardımcı olur çünkü dil ne olursa olsun, günlükleri her zaman tarama / tarama yapabilirsiniz.

2
@ Jacob: Ben ingilizceyim ama sadece ingilizce konuşabiliyorum. Ancak bu, tüm mühendislik üssünün İngiltere'de olduğu bir şirket içindi, bu nedenle diğer dillerde günlük dosyalarının (teşhis amaçlı, kullanıcı tarafından görülemeyen bilgiler) olması yalnızca kaynakların israfı olur. Metin yerine hata kodlarını kullanmanın anında çeviriye izin verdiğini kabul ediyorum - ancak bu sadece başlamak için tek bir dil kullanmaktan çok daha fazla iş. Bir şey nerede belirleyerek çalışmalarını azaltan meselesi sesler kullanışlı aslında önemli bir değer sağlamak için gitmiyor.
Jon Skeet

10
Ben İsviçreliyim. Kodun / yorumların / kayıtların İngilizce'den başka bir şeyde olması gerektiğini söyleyenlere bile ortalıkta rastlamak zorunda kalacaktım. İngilizce, kullanıcı arayüzleri dışında her şey için kullanılacak dildir. Her şey sadece kodu okumak ve tartışmak için zor yapar. Ana dili kullanmak saçmadır, çünkü kullandığınız diğer herhangi bir çerçeve / kütüphane İngilizce'dir.
jgauffin

1
+1 İngilizce, programlama dilinin franca dilidir. Tercüme etmek, mümkün olduğunca az katmana ve mümkün olduğunca açıklığa ihtiyacınız olan ilave bir katman koymaktır.


19

Çok fazla tasarım yapıyorum . Çok sayıda UML diyagramı oluşturma, özellikle de her bir işlem için, çoğu işe yaramaz hale gelen, her bir işlem için Sıra diyagramı. Sonunda, gereksiz yere ayrıntılı tasarım / diyagramları atlayarak ve doğrudan kodlamaya başlayarak önemli miktarda zaman kazanabileceği ortaya çıktı.


Eğer soru, "Gördüğünüz en pişman tasarım veya programlama kararı nedir?" kendimiz yaptığımız hataların aksine, "UML" yi listemin başına koyardım. Sağ "Windows kayıt defteri" altında.

2
UML, bir ekibin üyeleri arasında tartışmak iyidir, ancak tasarıma gelince tasarıma göre uygulayın, her zaman kötü sonuçlanır. Bu, bazı şirketlerin bir hayalidir, ancak trully, kesinlikle yazılı yazılım bu şekilde çalışmaz. +1!
deadalnix

17

Müşterilere ne istediklerini bilerek inanmak ve daha sonra onlarla kontrol etmeden önce çok şey yapmak.


15

Tek kötü tasarım kararım? 1980'lerde, çalışma zamanında yorumlanacak veri giriş ekranlarımız için bir çeşit şablon oluşturma konusunda parlak bir fikre sahip olduğumuz bir proje üzerinde çalışıyordum. Fena bir karar değil: giriş ekranlarının tasarlanmasını kolaylaştırdı. Temel olarak veri giriş ekranına benzeyen bir dosya oluşturun, bir giriş alanının neye göre etiket olduğunu ve giriş alanlarının alfa mı yoksa sayısal mı olduğunu belirlemek için bazı özel kodlarla tanımlayın. Daha sonra hangi doğrulamaların yapılması gerektiğini belirlemek için bu dosyalara daha özel kodlar eklemeye karar verdim. Sonra, ekranın koşullu oluşturulmasına izin vermek için daha fazla kod ekledim, X alanı sadece bir koşul doğru olduğunda dahil edildi. Sonra girdilerin basit bir şekilde işlenmesini sağlamak için daha fazla kod ekledim. Vs vs. Sonunda, ekran şablonumuzu ifadeler, kontrol yapıları ve bir giriş / çıkış kütüphanesiyle tamamlanmış yeni bir programlama diline dönüştürdük. Ve ne için? FORTRAN'ı yeniden icat etmek için bir sürü iş yaptık. Daha iyi tasarlanmış ve daha iyi test edilmiş diller için derleyicilerle dolu bir rafımız vardı. Uzmanlığımız olan ürünleri inşa etmek için bu kadar çaba sarf etmiş olsaydık, o şirket bugün hala iş dünyasında olabilirdi.


Bu hem komik hem de trajik :)

Üzücü olan, bu yaklaşımın bazen gitmek için en iyi yol olmasıdır. Müşteri, "ekran bir anda bildirimde bulunulabilir" veya "çay yapmak da dahil her şeyi yapar" seçimini yapabilir, ikisini birden değil!

3
Şablonları veya diğer genel kodları kullanmaya karşı hiçbir şeyim yok. Hata, genel bir kod parçasını bir dilden diline çevirmekti.

Bu kesin şeyin 2004'te yapıldığını gördüm! Tüm iş mantığı, iyi önlem almak için atılan dinamik "dillerde" birkaç yarı pişmiş denemeyle birlikte yaklaşık on beş yapılandırma tablosuna yayılmıştır (bkz. Greenspun's Onuncu Kuralı)!

1
FORTRAN yerine COBOL demek istemiyor musunuz?
finnw

15

Aşırı gayretli (adlandırılır YAGNI uygulanması Sayımı tarafından Tasarımı içinde Object Oriented Kalkınma Tuzaklar herhangi mantıklı kişi gereksinimleri olduğunu söyleyebilirdi bir ortamda) kesinlikle değişecek. Ve tekrar tekrar değiştirin.

Eğer (zor) her şeyi tam olarak şu anki şartlara göre kodladıysanız — bu daha genel olamaz mı? YAGNI tokmak ile - ve sonra gereksinimler büyük ölçüde değişebilir (ancak makul bir şekilde tahmin edilebilecek şekilde), o zaman bu uyum için 2 hafta ile 20 dakika arasında bir fark olabilir.

GÜNCELLEME: Açıklığa kavuşturmak için, işte olanlardan çok uzak olmayan kurgusal bir örnek. Yığın Taşması, rozetleri desteklemek için tasarlandı, ancak ilk başta yalnızca dört rozet düşünebileceklerini varsayalım. Sadece dört kişi, böylesine küçük bir sayı, bu yüzden sitedeki tüm mantık boyunca tam olarak dört rozet için destek sağladılar . Veritabanında, kullanıcı bilgisinde, tüm ekran kodunda. Çünkü "Ya bir daha ihtiyacın olmayacak" diye düşünemeyeceğin rozetlere ihtiyacın var, değil mi? Diyelim ki site yayına giriyor ve insanlar yeni rozetler önermeye başlıyor. Her rozetieklenmesi iki hafta kadar sürer, çünkü her yerde ince ayar yapmak için çok fazla kodlama vardır. Ama yine de, "Ya'ya ihtiyaç duymayacaksınız", bugünkü listeden daha fazla rozete ihtiyaç duymaz, bu nedenle genel rozet koleksiyonunu desteklemek için hiçbir zaman yeniden düzenleme yapılmaz. Böylesi genel bir koleksiyon daha fazla zaman alabilir miydi? Varsa, fazla değil.

YAGNI değerli bir ilkedir, ancak (ab) kötü tasarım ve uygun olmayan kodlamayı affetmek için kullanılmamalıdır. Bir denge var ve deneyimle, ona yaklaştığımı düşünüyorum.


1
Evet ve hayır, hangi yönde değişeceğini tahmin edebilir misiniz? Öngörülen jenerikliğe uymayan ilk yeniden kullanım için tamamen yetersiz olan acı verici karmaşık sistemler deneyimim var ...
Benjol

Evet, bu saçmalıktan çok YAGNI ile uğraşmayı tercih ederim.

Yani 2 haftayı daha önceden harcaması gerektiğini mi düşünüyorsun?
finnw

4
Bu örnek hiç YAGNI değil. KURU YAGNI'nin bir parçasıdır ve onsuz değişime duyarlı kalamazsınız.

3
Stephan, örnek, benim amacım olan manşetin ifadesinin glib ve uygunsuz bir şekilde kötüye kullanıldığını gösteriyor. KURU (varyantı OAOO ile) de iyi bir prensiptir, fakat oldukça ayrıdır: c2.com/cgi/wiki?OaooBalancesYagni . Ancak, "DRY, YAGNI'nin bir parçası olduğu" iddiasını destekleyecek hiçbir şey bulamıyorum . Hardal, sosisli sandviç ile iyi gider, ancak bu hardalın sosisli sandviçin bir parçası olduğu anlamına gelmez. Belki referanslarla açıklığa kavuşursanız, belki anlayacağım.
80x24 konsolu,

15

Beceriksiz insan kaynakları

Yanlış insanlarla doğru ve harika bir şey yapmaya çalışıyorum!
Gereksiz bir ego PM rolünde olsalar bile (özellikle yetersizliklerinin daha uzun süre dayanabileceği büyük firmalarda çok yaygındır).


1

13

Her defasında teknik borç oluşturuyorum, prosedür kodunu yazıyordum, test sınavlarını atlıyorum vs. Neredeyse kaçınılmaz olarak bunun yolun aşağısında benim için acı yarattığını görüyorum.


13

SQL Server Entegrasyon Servislerini (SSIS) Kullanma .

En büyük düşmanımın olmasını dilemiyorum.

Son iki ayda birkaç SSIS paketi oluşturduktan sonra, yalnızca geliştirdiğim paketlerin dağıtılabilir ve dağıtılamaz olduğunu bulmak için. Özellikle web dışı, SQL Server lisanslı olmayan bir ortamda.

SSIS paketlerinizi saf .NET POCO kodunda yeniden yazmak veya hedefli son tarihinizi kaçmak için 48 saatten daha az zamanınız olduğunda, olması çok kötü bir durum.

OLEDB Adaptörleri ve SQL Adapaters ile üç saatte bir SSIS paketini (test etmem ve geliştirmem iki ayını aldı) saf .NET kodunda yeniden yazabilmemi şaşırttı.

SSIS dağıtılamaz ve üzerinde yüklü bir SQL Server lisansı yoksa (özellikle DTSPipeline.dll) bir istemci makineden paketleri yürütmez. Bu ön bilmek iyi olurdu. Artık feragatnameyi MSDN'de görüyorum. SQL-LICENSED makine kodunu kullanarak tüm internet üzerinden örnek kodunuz olduğunda, bu iyi bir şey değildir. Temel olarak, SSIS paketlerinizi programlı olarak çalıştırmak için SQL sunucunuzla konuşacak bir web servisi oluşturmanız gerekir. Yürütme makinesinde yüklü bir SQL lisansınız yoksa, bunları saf .NET kodundan çalıştıramazsınız. Bu ne kadar gerçekçi değil? Microsoft, SSIS'in SQL sunucu kurulumu gerektiren makinelerde kullanılmasını gerçekten bekliyor mu? İki aylık ne kadar boşa.

Şirketim bu küçük baskı "gotcha" nedeniyle bir daha SSIS kullanmayacak.


Belki de "iyi baskı" yazılımını tamamen kullanmaktan kaçınmalısınız! Örneğin Talend, açık kaynaklı bir ETL IDE'dir.

+1: Evet. SSIS geliştirme deneyimi de bir kabustur. ETL'yi gerçekleştirmek için muhtemelen en az yarım düzine daha iyi yol var.
Jim G.


10

Bazı 'komik' paskalya yumurtalarını 2 hafta boyunca tatile gitmeden önce yazdığım bir koda atıyorum. Geri döndüğümde okuyan tek kişi olacağımı düşündüm, beni kıkırdayarak yeniden kodlamaya hazır hale getirecekti.

Söylemeye gerek yok, patronum ben yokken gözden geçirdiği zaman etkilenmedi ve “paskalya yumurtalarından” birinin yüzünü ASCII'de komik bir şekilde karikatür çizdiği zaman bile daha az etkilenmişti.

Mmmmmm ...


1
IMO, "İyi işti efendim!"

18
Çok yakın bir zamanda, ekibim tarafından "th'value (p) t'yer table!" Bak dedim, beni bir korsan gibi konuşmaya çalıştılar, ne elde ettiklerini hakettiler.

3
Arr, kayıtların bir salma haulin arıyor!

10

Sadece düzenli bir ol 'CSS klasörü iyi yapabileceği zaman ASP.Net Temaları kullanmak.


Lol, evet!

1
Bu cevap "ASP.NET'i Kullanma" olarak kısaltılabilir
finnw

Dış görünümler, varsayılan CssClass'ı ayarlamak için kullanışlıdır.
Min

8

Hızlı yolu doğru yoldan ziyade bazı kodların çalışmasına götürmek (biraz genel ama buna soyutlama ve dolayısıyla 'doğru' cevap) diyeceğiz.


7

Şirketim, işletme kullanıcılarımızın ve iş analistlerimizin proje gereksinimlerini belirleyeceği bir şelaleye benzer gelişme modeline sahiptir. "Büyük" projelerimizden birinde, bir yığın gereksinimimiz var ve özellikle muhasebe sistemimiz tarafından kullanılan veritabanı şemamızla ilgili bilgiler olmak üzere , uygulama ayrıntılarını içeren bir takım gereksinimler olduğunu fark ettim .

İş kullanıcılarına, uygulamanın benim alanım olduğunu yorumladım , gereksinimlerde bulunmamalı. Gereksinimlerini değiştirmek istemiyorlardı, çünkü sonuçta, onlar İŞDİR ve sadece muhasebe yazılımı tasarlamada mantıklı olur. Çok uzakta totem anket aşağı bir asılıyor geliştirici olarak, ben için para ödüyorlar yapmak yerine düşünmek . Mücadele ettikleri kadar, onları gereksinimleri tekrar yazmaya ikna edemedim - değişikliklerin etrafında çok fazla evrak ve bürokrasi var, bunun çok fazla bir güçlük olduğu.

Onlara istediklerini verdim. En azından sorta işe yarıyor , ancak veritabanı garip bir şekilde tasarlandı:

  • Gereksiz normalleştirme Çok. 5 veya 10 alan içeren tek bir kayıt 3 veya 4 tabloya bölünür. Bununla başa çıkabilirim, ancak şahsen 1: 1 alanın hepsini tek bir masaya koymak istiyorum.

  • Pek çok uygun olmayan denormalizasyon. Fatura verilerinden daha fazlasını depolayan fatura verilerini depolayan bir tablomuz var. Bayrak, InvoiceData tablosuyla mantıklı bir şekilde ilişkili olmasa da, her bayrak bir sihirli, sabit kodlanmış Birincil Anahtar değerine ve InvoiceData tablosunda boş bırakılmış diğer tüm alanlara sahip olacak şekilde, InvoiceData tablosunda çeşitli bayraklar depolar. Bayrak masada bir kayıt olarak temsil edildiğinden, bayrağı kendi masasına çekmeyi önerdim.

  • Çok daha uygun olmayan denormalizasyon. Bazı uygulama genelinde bayraklar, uygun olmayan tablolarda sütun olarak depolanır, böylece bir uygulamanın bayrağını değiştirmek, tablodaki tüm kayıtları güncellemeyi gerektirir.

  • Birincil anahtarlar, bir varchar birincil anahtarının "D" ile bitmesi durumunda, bir değer kümesini kullanarak faturaları hesaplayacağımız, aksi halde başka bir kümeyle hesapladığımız şekilde meta verileri içerir. Bu meta verileri ayrı bir sütuna çekmek veya başka bir tabloya hesaplamak için değer kümesini çekmek daha mantıklı olur.

  • Yabancı anahtarlar genellikle, birden fazla tabloya gider, öyle ki "M" ile biten bir yabancı anahtar, mortage hesap tablosumuza, "A" ile biten bir yabancı anahtar, otomatik hesap masamıza bağlanabilir. Verileri iki tabloya bölmek daha kolay olurdu, MortageData ve AutoInsuranceData.

Önerilerimin tümü, çok ağlama ve diş gıcırdatmasıyla vuruldu. Uygulamanın tasarlandığı gibi çalışıyor ve büyük bir çamur topunu oluştururken, tüm iğrenç saldırıları, özel durumları ve garip iş kurallarını alaycı ve esprili bir şekilde kaynak kodunda belgeliyor.


3
Tanrım, büyük çamur topunun yerçekimine ulaşmasından önce hızlı bir kaçış için CV'nizin güzel ve güncel olmasını umuyoruz!
Benjol

7

Eski teknolojiye bağlı kalmak, müşterilerinizin yeni bir .NET framework sürümüne yükseltmelerine izin vermeyecek kadar zor göründüğü için, yazılımı geliştirmek için daha fazla zaman harcayacaktır, çünkü daha yeni çerçeve sürümü.


+1: Yup - Ben orada oldum ... Ve n00b'nin yükselmeyeceğini fark ettiğim an, daha yeşil meralara kaçış planımı yapmaya başladım.
Jim G.

Ben de yaptım, gelecek ay emekli oldum!
üzüm bağları

6

Üniversiteye döndüğümde, üst düzey tasarım projem üzerinde çalışıyordum. Başka bir adamla ben web tabanlı bir hata takip sistemi yazıyorduk. (Çığır açan hiçbir şey yok, ancak ikimiz de biraz web deneyimi kazanmak istedik.) Java sunucularıyla bir şey yaptık ve çok iyi çalıştı, ancak Aptalca bir sebeple, İstisnaları hata işleme mekanizması olarak kullanmayı tercih etmek yerine, seçtik hata kodlarını kullanmak için.

Projemizi bir sınıfa sunduğumuzda ve bir fakülteden biri kaçınılmaz, “Tekrar yapmak zorunda olsaydın farklı şekilde ne yapardın?” Diye sordu. Anında cevabı biliyordum: "İstisnalar kullanırdım, bunun için oradalar."


Ahhh tekerleği yeniden icat etme zevkleri! :-) Bu komik.

Ben buna kasıtlı kusurlar derim, böylece bir sonraki yinelemede iyileştirebilirsin.
whatnick

2
İstisnalar sadece istisnaları ele almak içindir. Çok fazla insan her şeyi istisna haline getirerek istisnaları kötüye kullanır.

@jacob - İstisnaların tahmin edebileceğiniz şeyler (yani istisnai koşullar) için kullanılması gerektiği, ancak gördüğümden (ve bir Java programcısı olmamanız) Java'nın güneş altındaki her şey için istisnalar kullandığı düşüncesine katılıyorum. Dolayısıyla, Java kodunda istisnalar kullanmamak, dilin akışına aykırı sayılabilir.

6

Benim yöntemim değil, satır tabanlı bir XML dosyasını sütun tabanlı bir HTML raporuna dönüştürmek için bir XSLT oluşturdum.

Sadece IE’de çalıştı, nasıl çalıştığını çözmek tamamen imkansızdı. Genişletmek istediğimiz her zaman, inanılmaz derecede zordu ve yaş aldı.

Sonunda, aynı şeyi yapan küçük bir C # betiği ile değiştirdim.


Bunu ben de yaptım. XSL kullanarak bir e-posta şablonlama motoru kullandım ve okumayı ve sürdürmeyi zor buldum.
TrueWill

Evet. Birinin devasa XSLT dosyaları ağacı, birkaç basit VB.NET işleviyle değiştirildi. Çok tatmin edici, özellikle bir sonraki müşteri değişikliği talebinin XSLT'de yapılması mümkün olmadığında.

Çoğu programcının XSLT'yi kötü bir seçim olarak gördüğünü, sadece anlamadıklarını düşündüm . Küçük bir sorun kümesi için son derece yararlı, diğer birçok çözümden çok daha verimli. Öte yandan, çok sık WAY kullanılır ve çoğunlukla bu küçük problemlerde kullanılmaz ...
AviD

6

Tüm yeni teknolojileri kullanmaya çalışıyorum (yeni teknolojiyi öğrenmek için)


5

İş modelini değerlendirmek için yeterli zaman almadım. Müşterinin istediğini yaptım ama 6-12 ay sonra ikimiz de farklı şekilde yapması gerektiğine karar verdik.


4

Bir şartname olmadan tasarım.


3
Özellikler her zaman mümkün değildir

"Müşteriye istediği şey olup olmadığını sormadan çözümü uygulamak"; bu genellikle özellikleri takip ettiğiniz anlamına gelir.
dietbuddha

3

Gereksinimlere göre bir uygulamanın alt bölümünü uyguladım.

Gereksinimlerin şişirilmiş ve altın kaplı olduğu ve kodumun aşırı tasarlandığı ortaya çıktı. Alt bölümümü yalnızca o zaman eklediklerimle çalışacak şekilde tasarlamalıydım, ancak başından sonuna kadar genel destek eklemeden diğer tüm şeyleri eklemeyi planlıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.