Hangi kütüphaneyi / çerçeveyi çözdüğü sorun için fazla karmaşık olarak bıraktınız? [kapalı]


12

... ve işlevselliği "manuel" olarak kodladı mı?

Oldukça mecazi bir örnek olarak, bu tür kütüphaneler var olmasına ve birileri onları ciddiye almasına rağmen, ikinci dereceden denklemleri çözmek için bir kütüphaneye ihtiyacınız yoktur.

Daha tartışmalı bir durum olarak, koşullara bağlı olarak jQuery'yi (örneğin, bazı taş devri tarayıcılarını desteklemem gerektiğinde) bırakabilirim: bazı şeyleri basitleştirir, ancak DOM'a başka bir karmaşıklık ve güvenilmezlik katmanı ekler. Ve aşırı kullanılan jQuery, SO'da son zamanlarda görülen gibi saçma problemlere yol açar: ajQuery ile bir etikete nasıl boş bir href atayabilirim ? JavaScript değil, bir HTML sorusu olduğu ortaya çıktı.

Başkaları için saçma ve yine de belirgin olmayan başka bir durum, başka bir şablonlama sisteminin üzerine inşa edilmiş bazı şablonlama motoru / dili kullanmaktır: PHP. Üçüncü seviyedeki kimse?

Ve bir diğeri: bazen XML'yi (figürlü olarak) tükürmek printf, bazı canavarca XML motoruyla yapmaktan çok daha kolaydır.

Deneyiminizden başka vakalar var mı?


4
Diğer tüm araçlar gibi jQuery'yi de uygun olan yerlerde kullanırsınız. Anahtarınız varsa ön kapınızı açmak için çekiç ve keski kullanmazsınız.
Robert Harvey

1
@Robert Harvey: Tabii ki yazılım mühendisliğinde genellikle anahtarları ve çekiçleri tanımakta zorlanıyoruz. Gönderinin konusu bu.
mojuba

Popüler bir kütüphane ne kadar karmaşık olursa olsun, başkaları için anlaşılması kolay "basit" kütüphanenizden daha kolay büyüklük dereceleri olduğunu unutmayın.
Louis Kottmann

@RobertHarvey kapınız benimkinden çok daha iyi durumda olmalı.
Jimmy Hoffa

Yanıtlar:


14

MS kurumsal kitaplığının çoğu ve .net için çoğu 3. taraf denetimi, biraz kullanımdan sonra beni bu duygu ile bıraktı.

Kilometreniz değişebilir


2
Kabul edildi - Enterprise kütüphanesinin çoğu kafa karıştırıcı veya sezgisel değil, daha iyi bir iş yapan üçüncü taraf kütüphanelerinin bir geçit töreni ile. Tabii ki, başlıkta bir Microsoft tokat, bu bir "en iyi uygulama" olmalıdır
Watson

ilk günlerde entlib, erken çerçevelerle yapılması ya da çözülmesi biraz zor olan bazı şeyler yaptı ... bu günlerde, çoğunlukla ilk günlerle geriye dönük uyumluluk ya da gelecekteki sürümlerde göreceğiniz kısmen pişmiş çözümler gibi görünüyor. daha iyi bir form.
Bill

13

Windows İletişim Vakfı

Ana sayfada bir İsviçre çakısı resminin olması benim için hepsini özetliyor. XML yapılandırmasının yazdığınız kodun yaklaşık dört katı olduğunu ve C #, Java, PHP, Python ile "olması gereken" diğer tüm diller arasında birlikte çalışabilen SOAP hizmetlerini yazmak hala çok zor. ile birlikte çalışabilir olmak ...

Gelecekteki tüm projelerde, sadece REST'e bağlı kalacağım.


2
WCF 4.0 hiçbir XML yapılandırma dosyası gerektirmez. Diğer teknolojilerle birlikte çalışabilirlik konusunda hiçbir deneyimim yok (iyi çalışan bir istemci olarak WCF'yi kullanmak dışında), ancak hem kolay hem de sezgisel bulduğumu söyleyebilirim. Herhangi bir kitap okumadan veya herhangi bir eğitim almadan (ve son teslim tarihleriyle) kullanmaya başlamış olmama rağmen, koşarak yere vurabildim.
Allon Güralnek

4
"WCF" adını "WTF" olarak değiştirdim.
MetalMikester

1
@Allon: WCF 4.0'ı denemediğimi itiraf edeceğim, bu alanda önemli iyileştirmeler yapmaları oldukça olası ...
Dean Harding

12

İnsanların "kendi başlarına yuvarlanması" ile yaşadığım sorunlardan biri - yaklaşımları genellikle daha hızlı ve basit olsa da, kırılgan olma, böceklere sahip olma, eksik olma ve / veya güvenlik kusurları içermesi daha olasıdır. .

Basit bir örnek: XML yayınlamak için printf kullanmak kitaplık kullanmaktan 10 kat daha kolay olabilir:

printf("<xml>%s</xml>", str);

ama özel karakterlerden kaçmayı hatırladın strmı? Örneğin ' <' ve ' &'? Bazı insanlar "hayır yapmadım" diyebilir ve bunu yazmaya devam edebilir:

printf("<xml><![CDATA[%s]]></xml>", str);

Ancak içinde herhangi bir yerde str" ]]>" alt dizesi varsa bozuk XML yayınlayacaktır . Kenar çantası - tabii. Ancak yine de ciddi sonuçlarla beklenmedik sorunlara yol açabilecek geçerli bir senaryo.

"Kendinizi yuvarlamanın" uygun olabileceği birçok zaman ve yer vardır, ancak bazen uygun olduğunda tanımlamak için çok fazla deneyim ve bilgi gerekir. Bu nedenle, programcıları kendi uyguladıkları rutinler yerine yerleşik kütüphaneleri (varsa) kullanmayı tercih etmeye teşvik ediyorum.


11

Log4Net

Kütüphane iyidir, ancak belgeler korkunçtur. Yapmak istediğim şey için aşırıya kaçmıştı.

Bunun yerine Trace kullandım.


1
Robert, sen de beni dövüyorsun. Sadece log4net'e bakıyorum ve "vay, bu dinleyiciler havalı. Şimdi onu nasıl kullanırım ..?" ve sonra anladım zaman kendi kendime yazabilirim düşünüyorum.
JohnL

5
Gerçekten - saygıyla katılmıyorum - log.error () 'dan daha basit olamaz.
Watson

3
@Watson: Gerçekten bu kadar basitse, neden bir çerçeveye ihtiyacınız var?
Robert Harvey

Log4Net'in gereksiz karmaşıklığından vazgeçerek, yapılandırılması dakikalar alan Object Guy'ın alternatifini kullanıyorum.
cjmUK

7

Paylaşım Noktası

Beni yanlış anlamayın, SharePoint ile birlikte gelen şeylerin çoğuna ihtiyacınız varsa (ve çok fazla gelir!) şeyler, bu çaba ve yapılandırma değer değil.


6

ASP.NET WebForms - MVC çerçevesini kullanmaya başladığımdan beri (ve bir PHP / Smarty Template ortamından geldiğimden beri) .NET web geliştiricisi olarak uzun zamandır ekmek ve tereyağım olmasına rağmen - bazen sadece daha iyi olduğunu fark ediyorsunuz web geliştirme ve kullandığı soyutlama yapmak için yollar aşırı ve sızdıran .


ASP.NET WebForms demek, ASP.NET MVC farklı olarak düşünüyorum. Doğru?
Eric King

@Eric - evet doğru, bunu düzeltmeliyim!
Watson

3

Bunu yaptığım hemen hemen her durumda, pişman oldum:

  • Sarıcı kitaplığı yerine PHP oci_ * işlevlerinin kullanılması, kod sürdürülebilirliği nedeniyle kötü bir hamle olduğu ortaya çıktı. Tüm kodun Zend_Db'ye taşınması, veritabanı kodunun korunmasını daha kolay hale getirdi.
  • Diğer ızgara bileşenlerinin bazılarının ne kadar hızlı geliştiği göz önüne alındığında, daha fazla geliştirmek için çok fazla zaman alan kendi ajax ızgara bileşenimi yuvarlamak. Şu anda hepsini Ext JS ızgaralarına taşıyorum çünkü bunlarla üçüncü taraf işlevselliği büyük bir kitle var.
  • Prototip ve jquery gibi kitaplıklardan kaçınmak, genellikle izlenmesi zor olan çapraz tarayıcı sorunlarının tekrar tekrar ortaya çıkmasına neden oldu. Ext JS portu, tarayıcılar arası sıkıntılarımı çözdü. Anlamak için haftalar süren geniş bir çerçeve olsa bile sihir.

Birkaç güvenilir üçüncü taraf çerçevesi seçmenin ve bunları yaptığınız her şeyin temeli olarak kullanmanın çok daha iyi olduğu sonucuna vardım. Bu çerçeveler başkası tarafından geliştirilir ve hata ayıklanır, bu da onları standartlaştırıp iyi anladıktan sonra inanılmaz bir zaman tasarrufu sağlar.


+1. Ve bu kütüphanelerin açık kaynak olması yardımcı olur. Devam edin ve henüz yapmadıysanız, kaynak kodu kullandığınız tüm kitaplıklara indirin. Kütüphanenin kaynak kodunu okumak, problemleri teşhis etmenin ve çözmenin harika bir yolunun yanı sıra diğer programcıların (muhtemelen oldukça yüksek kalitede) kodundan öğrenme fırsatıdır.
Mike Clark

2

System.Text.RegularExpressions

Regex çok karmaşık ve çok yavaş. Çok nadiren Regex kullanacağım ve genellikle kendi metin ayrıştırma ve eşleme yazacağım.

Bazen Regex'i gerçekten karmaşık eşleştirme için yararlı bulacağım.


Normal ifade düzgün derleme [veya belki System.Text.RegularExpressions daha yavaş Perl & co sonra. Uygulama]?
Maciej Piechotka

3
Regex, manuel dize ayrıştırmaya kıyasla nispeten yavaş olabilir, ancak birçok insanın düşündüğünden daha hızlıdır ve çoğu pratik uygulama için genellikle yeterince hızlıdır.
Mike Clark

2
Bu özellikle .NET uygulaması hakkında bir şikayet olduğunu sanmıyorum, çünkü bu konuda özellikle karmaşık veya yavaş bir şey yok (aslında, mevcut daha hızlı uygulamalardan biri olarak buldum). En azından bu benim deneyimimdi. Elbette, düzenli ifadeler genel olarak kolayca karmaşık hale gelir ve kesinlikle insanların bunları tamamen uygunsuz yerlerde kullanma eğilimi vardır.
Dean Harding

2

Delphi4PHP'nin herhangi bir kötü basına ihtiyacı yok, ama denedim (sürüm 2.0) ve irademe bükmek son derece zordu. Müşterilerin eğitim videolarını izlemesi için bir youtube tarzı web uygulaması yapmak için kullanmak istedim, ancak çok hantal ve PHP çerçevelerini (VCL4PHP, Zend, Smarty ve Recess) birleştirmeye çalıştığımda kaçınılmaz, yeniden adlandırmak zorunda kaldım çünkü PHP 5 probleminde isim alanı yok.

Olduğu söyleniyor, sonunda kendim dönmedim. Hatalarımdan yeni öğrendim ve çok basit tutmaya ve CodeIgniter ve FlowPlayer'ı (JQuery ile) kullanmaya karar verdim.

Ben PHP 5 canlı ne çerçeve yapmak ne olursa olsun, PHP 6 aslında birlikte güzel oynayabilir bazı müthiş çerçeveler olacak bir özlem var.


2

Weka

Çok sayıda makine öğrenimi işi yapıyorum ve Naive Bayes veya lojistik regresyon gibi basit bir şeye ihtiyacım olursa, Weka'yı terk etmeyi seviyorum. Bazı oldukça karmaşık makine öğrenimi algoritmalarının iyi uygulamalarına sahiptir, ancak API, kaba nesne ile aşırı derecede mühendisliğe dayalı aşırı nesne yönelimli eski okul (jenerikler) Java API'sıdır. Bu konuda beni rahatsız eden şeyler:

  1. Başka hiçbir şeyin kullanmadığı kendi yeniden boyutlandırılabilir dizisini döndürür, meşgul çalışmanın ileri geri dönüşünü garanti eder.

  2. Yöntemlerin belirli bir sırayla çağrılması gereken çok sayıda sıralı bağlantı ve gerçekten dikkatli bir şekilde RTFM yapmadığınız sürece, bunu fark etmeyeceksiniz.

  3. Her örnek bir Instance nesnesi olmalı ve nominal veya sayısal olsun açıkça bir Attribute nesnesi ile bildirmek zorundayım. Bu, verileri Weka'nın istediği forma dönüştüren çok sayıda meşgul çalışmasına yol açar. Bu özellikle sinir bozucu çünkü Weka API'sı kod derlemenin zaten çalışacağı anlamına gelmez. Ben API tasarımı olsaydı, ben (belki sadece bir Nesne dizisi almak) kabul ne liberal olurdu ve sadece ne var ve onunla yapmak için doğru şey ne olduğunu anlamak için veri introspect.


2

Belirli bir projede EJB3'ü bıraktım. Bana bağımlılık enjeksiyonu ve konteyner yönetimli işlem yönetimi verdi. Ancak büyük bağımlılıklar (örn. JBoss) sunar ve sistemin otomatik testler yazmasını zorlaştırdı. Şimdi onu JPA + yapıcı bağımlılığı enjeksiyonuna çıkardım.


1

Bir uygulamadaki hata ayıklama bağlantı noktasına HTML tükürme. Bazı güncel verileri (otomatik yenileme ile) elde etmek için basit bir yola ihtiyacım vardı. Biçimlendirmek için bir kitaplığı çekmek iyi olurdu, ancak sadece yazdırmak daha kolaydı.

Ayrıca başka bir kütüphane için reddetti: Biz şeylerimizin çoğunda büyük, karmaşık bir XML kütüphanesi kullanın. Bir gün yeni bir uygulamada çalışmaya çalışırken 4 saat geçirdikten sonra 'çantaya koy' dedim ve TinyXML'de çektim. Bu kadar güçlü bir yer değil, ama basit şeyler yapmak çok daha az çaba gerektiriyor.


1

Son zamanlarda uygulamalarımda kullanabileceğim bir betik dili derleyicisi üzerinde çalışıyorum. Başkalarını kullandım, ama hiçbiri onlara ihtiyacım olanı yapmıyor. Peki neden kendim yazmaya çalışmadım diye düşündüm Genel kullanım için gerçekten uygun bir veya iki yıl önce olabilir, ama bu tamam. Ayrıca, harika bir öğrenme deneyimi.

Başka bir 'kendim rulo' çözümü, uygulamalarımı çevirmek için kullanılan parçalar. Mevcut kütüphaneler var, ama hiçbirini beğenmedim. Ben de kendiminkini yaptım.

Ve Delphi'nin veritabanı bileşenleri. Onlardan nefret ediyorum. Her zaman var. Bu yüzden kendi veritabanı arayüzümü çalıştım (ve tam olarak PHP için yaptığım gibi çalışır, diller arasında kodlamayı kolaylaştırır).

Temel olarak, bir seçenek verildiğinde, genellikle kendi kütüphanemi oluşturuyorum.


Ne demek istediğini biliyorum. Size ev yapımı STL, DB soyutlama, derleyicileri veya tercümanları ile tüm dilleri ve neyi olmayan bir cephanelik gösterebilirim. Genellikle meslektaşlarınız ve yönetiminiz tarafından memnuniyetle karşılanmaz, ancak kimse umursamasa bile derleyici yazmayan hangi programcı?
mojuba

0

Ohhh, çok fazla. Açık kaynak apis kullanarak oldukça çevik birkaç proje üzerinde çalıştım. Çalıştıklarında harika, ama çoğu zaman geliştiricilere, her türlü 3. parti apisi getirmek için bir fetişle acı çektik, bazıları belirsiz, bazıları değil, sadece içlerinde bir veya iki sınıf kullanmak istedikleri için. Sonuçta bir kod mish-mash ve birlikte kesmek sistemleri. Şimdiye kadarki en iyi kod olduğunu iddia ederek teslim ettiler ve onu alan fakir slobs, bağımlılık sorunları ve hacklerle dolu anlaşılmaz, belgesiz bir karmaşa buluyorlar.

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.