GUIをグラフィカルにレイアウトすることは「不正行為」と見なされるべきですか?


18

私には、私よりプログラミング経験が少し多い友人がいます。私たちが使用しているさまざまなプログラミング技術すべてについて話していて、Interface Builderが会話の中で登場しました。

私は自分自身を教えてきたものを除いて、プログラミングなしの背景なので、私は個人的に信じているIBとすべてのそれの機能(IBOutletsIBActions)ヘルプ(そのことについては、すべてのスキルレベル、)私のスキルレベルのコーダー短い時間で彼らの完全なプロジェクト。

IBに対する彼の見解は少し熱狂的です。彼は、Interface Builderを利用するコーダーは、手作業でインターフェイスをレイアウトする必要がないという事実を「ごまかし」ていると考えています。


質問:

GUIビルダーを使用してインターフェイス要素をレイアウトすることは、「不正行為」と見なすべきですか(ほとんどのプログラミングでは、コードを手作業でインターフェイスをレイアウトする必要があるため)。どうして?


32
あなたが犬を買ってあなたのためにそれをすることができるのになぜbarえるのですか?
jfrankcarr

29
ピックアップトラックの使用は不正行為です。本物の男性は120度の天候で野生の馬を追い越し、飼いならします。彼らは後ろから彼らに近づきます。義務的xkcd.com/378
仕事

9
彼は浮気として手動で物事をコンピュータを使用しての代わりに行うことを検討しない理由をあなたの友人に尋ねる
DPD

2
あなたの友人が会うために積極的な期限がなかったように聞こえます。
-MattDavey

15
不正行為を考慮することは、プログラマーのにすぎません。
アランB

回答:


60

不正行為ではありません。IBのようなプログラムはツールです。ジョブに適切なものを使用してください。それについて独断的になる必要はありません。

そのようなツールを使用してより効果的な場合は、それを使用してください。唯一の注意点は、決定を下す際にトレードオフを学習する必要があるということです。手作業でレイアウトを行うと、ドラッグアンドドロップが簡単になりますが、正確に制御できます。ドラッグアンドドロップツールを使用すると、多くのことをすばやく簡単に行うことができますが、コードを長期にわたって維持するのが難しくなる可能性があります。

個人的には、ドラッグアンドドロップUIデザインツールを使用して成功したことも、大きな喜びを得たこともないのですが、それは私だけです。手作業でGUIをレイアウトすることが最も効果的であり、時間の経過とともに保守しやすいコードベースが得られることがわかりました。他には逆の経験があります。


3
追加するだけで、デザイナーツールは単なるコードジェネレーターです。通常、コードを生成するのは良いことです。コードを生成でき、目的のことを実行できるからです。画面に実際に何か便利なことをさせる。私の経験は異なります。デザイナーツールを使用したほうが、生産性が高くなりました。
アンディ

Andyのメモの補遺として、適切なデザイナーツールは世界のすべての違いを生みます。GUI開発にDelphi / Lazarusを使用しましたが、それは素晴らしかったです。また、MS Frontpageの使用を義務付けられましたが、もう一方の端から恐ろしいhtmlが出ます。
スペンサーラスブン

FWIW、MFCを使用して、ビジュアルエディターを使用して近くに配置し、手で調整して正しく配置します。それは私にとって最速の方法のようです。
デビッドソーンリー

特別なツールを使用して作業を高速化することには問題はありませんが、追加することは次のとおりです。 「Button btn54 = new Button(x:543、y:782);」と書いてください
Katana314

17

仕事としてのプログラミングはスポーツでもゲームでもありません。したがって、不正行為の議論は非常に薄いです。視覚ツールが生産性を向上させる場合、それらを使用しないのは愚かなことでしょう。私の経験では、些細なインターフェースを何度も繰り返すことなく、実際の問題解決コードにより多くの時間を費やすことができます。

ただし、設定やデータがインターフェイスに侵入しやすいことに注意してください。プレゼンテーションとロジックを分離しておくことについては過激です。


10

あなたがそこに着くために何かを犠牲にしている場合にのみ、不正行為です。ほとんどのGUIレイアウトは、とにかく作成するコードを生成するだけです(レイアウトが十分でないため、多くの場合手作業で編集する必要があります)。

基本的には違います。

他のすべてが同じであれば、同じことをより速く行うことができるツールはすべて良いです。


私はしっかりと「利用可能なレイアウトツールを使用する」キャンプにいます。生成されたコードはしばしば微調整が必​​要ですが、ツールは時間を節約します。「不正行為」の男は、生成されたものを編集するのに十分な時間をかけて理解していない人のように聞こえます。
ジムでテキサス州

4

不正行為はゲームの名前です。あらゆる種類の開発の決定を行うときは、常に最も簡単なルートをとるべきです。それを不正行為と呼び、「生産的であること」と呼びます。違いはありません。最小限の労力で作業を完了するのに役立つツールを選択する必要があります(もちろん、メンテナンスとスケーラビリティを忘れないでください)。

具体的にはIBを使用する場合、IBによって節約される時間と、より滑らかであまり馴染みのないコードを維持するコストとを比較検討する必要があります。これは実際にはケースバイケースであり、人ごとの決定の種類です。多くの場合、ツールとウィザードを使用すると、低いメンテナンスコストで多くの作業を行うことができます。また、ときどき、スロップコードや、処理方法がわからないほど漏れやすい抽象化が導入されます。IBは開発に追加するコストに見合う価値があると自分で判断したように思えますが、お友達はツールがそれを助けてくれる以上に彼を妨害していることを簡単に見つけるかもしれません。


3

地獄いや ただし、完全に手作業で行うことは、不要な作業を自分で行う明確なケースです。

(通常、ビルダーを使用してレイアウトします。微調整が必​​要な場合は、常にではありませんが手作業で行われる傾向があります)。


バージョン2.0の.Netでは、部分クラスのおかげでGUIとロジックが分離されていると思います。同じクラスが2つの異なるファイルで定義されています。1つは完全に自動生成され、もう1つはユーザーがカスタマイズします。
ジョブ

「不必要な作業を行うという明確なケース」であるという声明には同意できません。それはすべて、ツールとプログラマーのスキルに依存します。たとえば、選択したGUIビルダーを使用するよりも、tcl / tk GUIを手作業でより速く、より良いコードでコーディングできると確信しています。OTOH、.netデスクトップアプリを作成する場合、Visual Studio以外の使用を検討する方法はありません。
ブライアンオークリー

OPは一般的なケースについて非常に明確に話しているため(質問内の太字のテキストを参照)、一般的なケースに関するあなたの意見の相違を受け入れることはできません。このようになりました。
マキシマスミニマス

3

間違いを犯すものではありませんが、GUIなしではGUIをレイアウトできなかった開発者に少し敬意が払われます。IMO、これを使用することはシステム提供のデータ型を使用することと違いはありません。システムライブラリの1つを使用できる場合、独自のリンクリストまたはハッシュマップを実装する理由は何ですか?

FWIW数か月前にJava SwingでUIを実装する必要がありました。使用したことがないので、すべてを手書きで書いて、どのように機能するかをよりよく理解できるようにしました。これで基本的なAPIがわかったので、手伝うことができれば、もう1つは手書きで書きません。


1

以下のよう@Bryanオークリーの状態、それだけのツールではなく、「カンニング」です。それはすべてあなたが正確にレイアウトしているものに依存します。よるならば手はそれ非常に面倒な運動を行い、その後、あなたは本当にあなたがより生産的になり、他の選択肢を探してください。

私は以前、インターフェイスを手作業でコーディングする陣営にいましたが、後にインターフェイスのレイアウトを行った後、ひざに矢を取り、別の意見を持ちました。できれば、生産性が向上する場合は、グラフィックツールを使用してGUIをレイアウトします。

最近、ViewとViewModelを区別してMVVMパターンを使用すると、グラフィカルツールをいつ使用するかが少し明確になります。Phil Haackは、Webからアプリケーション開発への移行について尋ねられたときに、Hiting CodeポッドキャストGithub for Windowsエピソードでこれについて簡単に説明しています。「手作業で」コーディングしてViewModelを実行し、デザイナーがViewをグラフィカルに構築できるようにすること(およびそれに応じてViewModelを接続すること)がより理にかなっています。


1

Interface Builderのようなツールの大きな利点の1つは、UIの設計作業とプログラムの実装を分離できることです。最小限のコーディングスキルを持つ人は、UIのレイアウトの変更、ボタンとメニューのキャプションの変更、UIの異なる言語への翻訳などを簡単に行うことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.