Bir özelliği uygulamak için iyi bir fikrim yoksa ne olur? [kapalı]


32

Kendi başvurum üzerinde çalışıyorum ve takılıyorum. Bir özellik uygulamak zorundayım, ancak bu özelliği uygulamak için iyi bir yaklaşım bulamıyorum. Birkaç gündür bunu düşünüyordum ve iyi düşünceler gelmedi. İnternette arama yapmak bana ilham vermedi.

Devam etmeliyim, ama bilmek istiyorum, en iyisi nedir:

  • Daha fazla düşün, daha fazla bekle ve en iyi yaklaşımı aramaya devam et
  • Her şeyi testlerle kapsayan zaman kaybetmeyi bırakın ve zayıf tasarımla başlayın

Ne düşünüyorsun? Daha önce de söylediğim gibi, kendi başvurum üzerinde çalışıyorum. Son tarihlerim yok, ancak en kısa zamanda uygulamayı kodlamayı da bitirmek istiyorum.



12
@gnat: Bu diğer sorular, soru soran kişilerin bazı özellikleri nasıl temiz bir şekilde uygulayabildiklerini zaten bildiği, ancak "hızlı ve kirli" bir arı yetiştiriciliği için iyi bir tasarımdan vazgeçmek isteyebilecekleri durumlarla ilgilidir. Bununla birlikte, bu soru farklı bir durumu tanımlamaktadır, genel olarak problem çözme ile ilgili olup, başlamak için iyi bir nokta bulamazsanız, bu yüzden IMHO diye bir kopya yoktur.
Doc Brown

Not: Uygulama başarılı olursa, asla "kodlamayı bitiremezsin" ve özellikler yine de yeniden tasarlanır. Bu yüzden şimdi elimden geldiğince en iyi şekilde uygulamak ile giderdim.
ren,

Yanıtlar:


41

Dışında bu konuda insanlara (soru projede meslektaşları yok önerir) konuşurken gelen, sık sık o ben şeylere odaklanmak için iyi bir yaklaşım bulmak için yapmak.

Genelde, kodun bir kısmını yazmam gerektiğini bildiğim bir kısım var. Henüz nasıl yazacağımı bilmediğim şeyler daha sonra kukla sonuçları döndüren ya da geri kalanını test etmek için yeterince iyi bir yaklaşım kullanan saplamalar ile değiştirilir.

Bu sizi üretken tutar. Ve eksik parçayı uygulamanız gerektiğinde, arayüze sahip olursunuz. Sorunu çevreleyen çok sayıda kod yazdınız, aynı problem alanında, genellikle fikir üretmeme yardım ediyor: neyi ortaya çıkarmak için tam olarak neye ihtiyaç duyduğunuzu ve sorunu çözmek için başka ne girdilerin mevcut olduğunu biliyorsunuz. . Ayrıca, genellikle sonuç, eksik olan parçanın başlangıçta sanıldığı kadar kapsamlı olması gerekmediğidir.


6
En riskli, en az anlaşılan kodu en son yazmanın dezavantajı, sorunu çözmenin mümkün olmadığını veya programın mimarisinde yapılacak önemli değişikliklerle çözmenin mümkün olmadığını, ancak çok fazla boşa harcanan çaba olduğunu ortaya koymasıdır.
Rich Smith

1
Bu yaklaşımın diğer dezavantajı bazen sizi yönlendirir: “X sorununu çözebilirim. Geriye kalan tek şey Y yapmak.” gerçekte, Y uygulanabilir değildir ve asıl çözüm Z'dir
Brian

@RichSmith, Brian: Bana sorarsanız nadiren de olsa oluyor. Daha sonra, eksik kısmın neden bu kadar zor olduğunu daha iyi anlamanızı sağlayabilir ve bu da tahminlerinizi geliştirir. Ve spekülatif ve keyfi bir sorumluluk dağılımı temelinde haftalarca çalışmayı önermem.
jdv-Jan de Vaan,

Bu olsa da olumsuz olup olmadığını tartışılabilir. Vaktinizi araştırmamak için zamanınızı harcayacak mıydınız? ya da sizin tarafınızdan oturup ne işe yarayacağını tahmin ederek? Hızlı prototip yazmak, bir şeyler denemek ve hızlıca başarısız olmak iyi bir uygulama. Kesin olarak bilmek ve gelecekteki benzer durumlar için tecrübe kazanmanın tek yolu bu
sara

14

Arama başarısız olursa, aldığınız ilk (zorunlu olarak en iyi değil) fikrini kullanarak her zaman uygulayabilir ve daha sonra doğru yaklaşımı bulduğunuzda yeniden uygulayabilirsiniz.

Bu doğru bir yaklaşımdır, çünkü iyi bir fikir gibi görünen bir şey bulsanız bile, daha sonra kötü olabilir. Ya da o zamanlar iyi olabilir, fakat daha sonra daha iyi bir şeyler bulursunuz. O zaman hala refactor gerekir.

Bunu yaparken, yeniden yapılandırmanın kolay olacağı şekilde tasarladığınızdan ve uyguladığınızdan emin olun. Düzgün yaparsanız, yalnızca sorunlu kısmı değiştirmeniz gerekecek ve baştan başlamayacaksınız.


1
Bu yazıda varsayılmış gibi görünüyor, ancak kodunuzu yeniden faktörlendirmenin kolay olduğu bir şekilde yazmanızın çok önemli olduğunu eklemek isterim .
c_maker

@c_maker Evet, elbette. Aksi takdirde, daha sonra sıfırdan her şeyi yeniden yazmak mantıklı değildir. Cevabına ekleyeceğim. teşekkürler
BЈовић

10

Başka birine sormaya ne dersin? Örneğin, sorununuzu burada açıklayabilir veya daha çok uygulama sorunu ise, stackoverflow.com adresinde bulabilir ve fikir isteyebilirsiniz. Bazen, iyi cevaplar alamıyor olsanız bile, sorunu yazmaya başlarsanız zaten size yardımcı olacaktır.


Sorunlu Kullanıcı Arayüzü ise, ux.stackexchange.com
Rob Church

SO'ya sorarsanız, cevaplar Creative Commons altında telif hakkına tabi olacak ve projeye bağlı olarak bu kod kullanılamaz olabilir.
smcg

2
Tavsiye telif hakkı olabilir mi? Kesinlikle yazar kopyala / yapıştır değil öğretici olarak kullanırdı.
grizwako

@smcg: konu burada tartışıldı: meta.stackexchange.com/questions/12527/… - Ama dürüst olmak gerekirse, bu gerçekten bir sorun haline gelirse, birinin GrizzLy'nin önerdiği şekilde bunu çözebileceğini düşünüyorum.
Doktor Brown,

@DocBrown IANAL bu yüzden, bunun devam edip etmeyeceğini kesin olarak söyleyemem, ancak bazen dikkatli olmanız iyidir.
smcg

2

Birkaç fikir:

  • Beyin fırtınası
    Aldığınız her aptalca fikri yazın (kağıda veya beyaz tahtaya). İşe yaramayacağından emin olduklarını geç. Yazmaya devam et. Potansiyel olarak ilgili gerçek dünya sorunlarına çözümler dahil edin. Örneğin, boyayı karıştırmak veya duvara çivi koymak ya da yağınızı değiştirmek gerçek dünyadaki bir benzetmeyi çözüyor mu?
  • Yardım
    isteyin Google, burada isteyin, inek arkadaşlarınıza sorun, vb.
  • İlgili bir sorunu çözün
    Sen çözemez sorunu, ancak çok daha basit bir çözebilir? Ya da eşit derecede karmaşık, ilgili biri? Yap bunu. Ardından, çözümünüzü istenen çözüme yaklaştırmak için küçük ve bireysel değişiklikler yapın.

  • Arayüzünüzün bir web servisi, web sayfası, yerel form, kamera, klavye, monitör veya bir arayüz olup olmadığına bakılmaksızın , dışarıdan yazmaya başlamanız yeterlidir . Arabirimin çalışmasını sağlamak için birkaç satır kod / sözde kod yazın. Henüz var olmayan sihirli yöntemleri kullanın. Sürekli olarak, var olmayan her büyülü yöntem için aynısını yapın. Daha sonra optimize et.

2

Kötü bir çözüm bulmakta yanlış bir şey yok. Çoğu zaman, o andaki sorun alanı hakkında yeterince bilginiz yoktur. Kötü bir çözümle devam edelim ve sorun hakkında daha fazla bilgi edelim. O zaman hala geri dönebilir ve ilk çözümünüzü yeniden canlandırabilirsiniz.


1

Her zaman son kullanıcı bakış açısına bakıp denerim. Üzerinde çalışmak için çok az zaman harcayabileceğiniz bir geliştirici olarak "harika" bir fikir düşünmesi çok kolay.

İdeal olarak, uygulamanızdaki tüm özellikleri belirlemek ve bunları son kullanıcının yararına göre önceliklendirmek istiyorsunuz, kişisel olarak MOSCoW kullanıyorum , ancak önceliklendirme yönteminizi aynı seviyede tuttuğunuz sürece 1 - 5.

Bundan sonra, bu özelliğin hala uygulamanızın vazgeçilmez bir parçası olduğunu görüyorsanız, o zaman insanlar daha önce de söylediğiniz gibi sorun! Sonunda bir meslektaşım veya Stackoverflow'taki hoş insanlar tarafından çözülmemiş bir problemle karşılaştığımı sanmıyorum.


Harika, çünkü ben Moskova'lıyım :)
user21974 11:13

İşte bir işaret!
Mrk Fldig

1

Benim düşüncem: asla işe yarayan kod yazmayın! Gelecekte refaktör yapmak çok zor olmalı.

Geliştiriciler için (ve elbette PM ya da patronlar) gerçekten yaygın bir yaklaşım. "Sadece çalışmasını sağla" veya "sonradan düzelteceğim" (sonradan ne zaman ??? asla değil!), Ancak projenin ortasında elde edemeyeceğiniz bir şey olmadığını düşünüyorum.

Benim önerim, bir süredir sorununuzu düşünmekten vazgeçmek .... başka bir şey yapmak ve bazen de çözümler ortaya çıkıyor.

Btw, bir meslektaşına sormak sorununuzu çözmenin kesinlikle harika bir yoludur.

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.