Grafiksel olarak bir GUI düzenlemek “hile” olarak mı değerlendirilmelidir?


18

Benim gibi programlama tecrübesi biraz daha fazla olan bir arkadaşım var. Kullandığımız tüm farklı programlama teknolojilerinden bahsediyorduk ve Interface Builder konuşmaya başladı.

Kendime öğrettiğim şeyler dışında hiçbir programlama altyapısı olmamakla birlikte, kişisel olarak IB ve tüm özelliklerinin ( IBOutlets, IBActions) beceri seviyemin kodlayıcılarına (ve bu konudaki tüm beceri seviyelerinin) projelerini daha kısa sürede tamamlamalarına yardımcı olduğuna inanıyorum .

IB'ye bakış açısı biraz hevesli. Interface Builder'ı kullanan kodlayıcıların arayüzleri elle düzenlemek zorunda olmadıkları için "aldattığını" düşünüyor.


Soru:

Arabirim öğelerini yerleştirmek için bir GUI oluşturucu kullanmak "hile" olarak düşünülmelidir (çünkü çoğu programlama başlangıçta kodları elle kodlama yoluyla yerleştirmeyi gerektirdiğinden)? Neden?


32
Sizin için bir köpek satın alabileceğinizde neden havlıyoruz?
jfrankcarr

29
Kamyonet kullanmak hile yapıyor. Gerçek erkekler 120 derece havalarda vahşi atları geçip evcilleştirir. Onlara arkadan yaklaşıyorlar. Zorunlu xkcd.com/378
İş

9
arkadaşınıza neden işleri elle hile yapmak yerine bir bilgisayar kullanmayı düşünmediğini sorun
DPD

2
Arkadaşınızın asla agresif bir son teslim tarihi olmamış gibi görünüyor.
MattDavey

15
Hile göz önüne alındığında sadece programcı züppe olduğunu.
Alan B

Yanıtlar:


60

Hile değil. IB gibi programlar araçlardır. İş için doğru olanı kullanın. Bu konuda dogmatik olmanıza gerek yok.

Böyle bir aracı kullanmakta daha etkili olursanız kullanın. Tek uyarı, kararlarınızı verirken ödünleşmeleri öğrenmenizdir. Düzeni elle yapmak, sürükle ve bırak kolaylığı pahasına hassas kontrol sağlar. Sürükle ve bırak araçları birçok şeyi hızlı ve kolay bir şekilde yapmanızı sağlar, ancak kodunuzun zaman içinde korunmasını zorlaştırabilir.

Kişisel olarak, sürükle ve bırak kullanıcı arayüzü tasarım aracını kullanmaktan hiçbir zaman başarılı olamadım ya da zevk almadım, ama bu sadece benim. GUI'leri elle yerleştirmenin benim için en etkili olduğunu ve zaman içinde bakımı daha kolay olan bir kod tabanı verdiğini düşünüyorum. Diğerleri ise tam tersi bir deneyime sahiptir.


3
Eklemek gerekirse, tasarımcı araçları sadece kod üreteçleridir. Kod oluşturmak genellikle iyi bir şeydir, çünkü onu üretebilir ve yapmak istediğiniz şeyi yapmaya devam edebilirsiniz; ekranın gerçekten yararlı bir şey yapmasını sağlayın. Deneyimlerim farklı; Tasarımcı araçlarını kullanmaktan çok daha verimliydim.
Andy

Andy'nin notuna bir ek olarak, doğru tasarımcı aracı dünyadaki tüm farkı yaratıyor. Ben GUI geliştirme için Delphi / Lazarus kullandım ve harikaydı. Ben de MS Frontpage kullanmak için zorunlu, ve diğer ucundan korkunç html olsun.
Spencer Rathbun

FWIW, MFC kullanarak yakınlaştırmak için görsel düzenleyiciyi kullanıyorum, sonra düzeltmek için elle ayar yapıyorum. Bu benim için en hızlı yol gibi görünüyor.
David Thornley

İşleri daha hızlı yapmak için özel bir araç kullanmakla ilgili bir sorunum yok, ancak eklemek için: Benim tercihim, veri odaklı modelleri, yani XML'de bir UI'a düzenini tanımlayan araçlar - kod üreteçleri yerine Senin için yaz "Düğme btn54 = yeni Düğme (x: 543, y: 782);"
Katana314

17

Bir iş olarak programlamak bir spor ya da oyun değildir. Yani hile iddiası çok incedir. Görsel araçlar verimliliğinizi artırırsa, bunları kullanmamanız aptal olur. Benim deneyimlerim, bu önemsiz arayüz şeyler tekrar tekrar yapmadan gerçek sorun çözme kodu üzerinde daha fazla zaman harcamak için beni olsun.

Yine de, ayarların veya verilerin arayüze girmesi kolaydır. Sunum ve mantığı ayrı tutma konusunda radikal olun.


10

Sadece oraya ulaşmak için bir şey feda ediyorsanız hile yapıyor. Çoğu GUI mizanpajı, her durumda yapacağınız kodu oluşturur (ve düzen yeterli olmadığından genellikle elle düzenlemek zorunda kalırsınız).

Temel olarak hayır.

Her şey eşit olduğunda, aynı şeyi daha hızlı yapmanıza izin veren herhangi bir araç iyidir.


Ben sıkıca 'mevcut düzen araçlarını kullan' kampındayım. Oluşturulan kod genellikle biraz düzeltmeye ihtiyaç duysa da, araçlar zaman kazandırır. 'Hile yapan' adam, üretileni düzenlemek için yeterince iyi anlamaya zaman almayan biri gibi geliyor.
Jim In Texas

4

Hile oyunun adıdır. Herhangi bir geliştirme kararı alırken her zaman yapabileceğiniz en kolay yolu seçmelisiniz. Buna hile, "üretken olma"; Fark yaratmıyor. İşi en az çaba ile yapmanıza yardımcı olan aracı seçmelisiniz (elbette, bakım ve ölçeklenebilirliği unutmayın).

Şimdi özellikle IB ile, IB tarafından tasarruf edilen zamanı, daha sloppier olan ve daha az aşina olduğunuz kodu korumak zorunda kalma maliyetiyle karşılaştırmalısınız. Bu durum, duruma göre ve kişiye göre bir tür karardır. Birçok durumda, araçlar ve sihirbazlar düşük ek bakım maliyeti ile çok daha fazla iş yapmanıza izin verir ... ve bazen ne yapacağınızı bildiğinizden daha fazla slop kodu ve daha sızdıran soyutlama sağlarlar. IB'nin gelişime kattığı herhangi bir maliyete değer olduğuna kendiniz karar verdiğiniz anlaşılıyor, ancak arkadaşınız, aracın ona yardımcı olduğundan daha fazlasını engellediğini kolayca bulabilir.


3

Asla. Bununla birlikte, tamamen elle yapmak, kendiniz için gereksiz işler yapmanın açık bir örneğidir.

(Genellikle bir inşaatçı kullanarak yerleştirirdim ve herhangi bir ince ayar gerekiyorsa - ama her zaman değil - elle yapılma eğilimindedir).


.Net sürümünde 2.0 kısmi sınıflar sayesinde GUI ve mantığın ayrı olduğuna inanıyorum - aynı sınıf iki farklı dosyada tanımlanmış; biri tamamen otomatik olarak oluşturulur ve biri sizin tarafınızdan özelleştirilir.
Meslek

Bunun "gereksiz çalışma yapmanın açık bir vakası" olduğunu kabul edemem. Her şey araca ve programcının becerisine bağlıdır. Örneğin, bir tcl / tk GUI'yi daha hızlı ve daha iyi bir nihai kodla, seçtiğiniz herhangi bir GUI oluşturucuyu kullanarak yapabileceğinizden daha iyi kodlayabileceğimden eminim. OTOH, .net masaüstü uygulaması oluştururken Visual Studio dışında bir şey kullanmayı düşünmem mümkün değil.
Bryan Oakley

OP genel durum hakkında oldukça açık bir şekilde konuştuğundan (sorudaki koyu renkli metne bakın) Genel durumla ilgili anlaşmazlığınızı kabul edemem, ancak özel davaların var olabileceğini ve var olabileceğini kabul ediyorum. Böylece iki kez.
Maximus Minimus

3

Biraz kadar az bir geliştirici için saygı rağmen kesinlikle hile sayılmaz olamazdı biri olmadan bir GUI ortaya koymak. IMO, birini kullanmak sistem tarafından sağlanan bir veri türü kullanmaktan farklı değildir - sistem kitaplığından birini kullanabiliyorsanız neden kendi bağlantılı listenizi veya karma haritanızı uygularsınız?

FWIW Birkaç ay önce Java Swing'de bir kullanıcı arayüzü uygulamak zorunda kaldım. Hiç kullanmadım, bu yüzden hepsini elle yazdım, böylece nasıl çalıştığını daha iyi anlayabiliyordum. Artık temel API'yi bildiğime göre, yardımcı olabilirsem bir daha asla elle yazmam!


1

As @Bryan Oakley devletler, sadece bir aracı ve bir "hile" var. Her şey tam olarak ne koyduğunuza bağlıdır. Elle inanılmaz derecede zahmetli bir egzersiz yaparsa , sizi daha üretken hale getiren diğer alternatifleri aramalısınız.

Eskiden arayüzü kodlayan el kampındaydım, ancak daha sonra arayüzleri yerleştirdikten sonra dizine bir ok aldım ve farklı bir fikrim vardı. Yapabilirsem ve beni daha üretken yaparsa GUI'yi düzenlemek için bir grafik aracı kullanırdım.

Son zamanlarda MVVM desenini kullanarak, View ve ViewModel ayrımıyla, grafik araçlarını ne zaman kullanacağınızı biraz daha açık hale getirir. Phil Haack , web'den uygulama geliştirmeye geçiş sorulduğunda Herding Code podcast'in Windows için Github bölümünde kısaca tartışıyor . ViewModel'i "elle" kodlayarak yapmak daha mantıklıdır ve tasarımcının Görünümü grafiksel olarak oluşturmasına izin verin (ve ViewModels'i buna göre bağlayın).


1

Interface Builder gibi araçların en büyük avantajlarından biri, kullanıcı arayüzünün tasarım çalışmalarını programın uygulanmasından ayırmayı mümkün kılmasıdır. Minimum kodlama becerisine sahip biri, kullanıcı arayüzünün düzenini kolayca değiştirebilir, düğme ve menü başlıklarını değiştirebilir, kullanıcı arayüzünü farklı bir dile çevirebilir vb.

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.