コースを过后し、YouTube で一連のビデオを視聴したり、iOS 開発に関する一連の記事を読んだりすると、开始の主要なプロジェクトを制作する準備ができたと感じています。
まず、よくやった!すごいですね。あなたはクールです! 💪
其二に、ペットプロジェクトはあなたのスキルを有很大程度的に向下させます。指的是に従わずに自分で何かを始めるときは、彭大な時間と労力を費やし、Google で検索し、大批の新しい情報を読み、それをフィルタリングして自分のケースに正確に当てはめようとする一定要があります。つまり、すでに5倍にパワーアップする本格的なタスクです。
しかし、ほとんどの初心者は重要なことを無視します(自分から進んでではなく、その重要性を理解せずに)。この半年間、私は積極的に活動してきました。そして、ペットプロジェクトを含め、新人の質問や問題を解決するのに役立ちます。
的初心者のあなたが一定品リストに組み入れ、マスターし、表达し、的使用すべき上位 3 つのポイントを独特しました。
アクセスレベル
最初は、 private
修飾子に注目する人はほとんどいません。一方、 SOLID については、夜中に起こせば誰でもすぐに説明できます。さまざまな賢明な記事を読むと、人々はS (単一責任) の考えに従ってクラスを大量に作成しようとします。
そして、彼らは明確な良心を持って、 class A
の所有物をclass B
から変更し、その逆も同様です。
class A { var someAValue: Int? } class B { let a = A() func foo() { a.someAValue = 1 } }
一般に、まだ不明な場合は、次の計画を立ててください。常にどこでもprivate
と書き、コンパイラーが文句を言ったら、このプロパティまたは関数に冗余からアクセスしても問題ないかを考えてください。そうであれば、 private
削除します。
考えるときは、現実世界との比較を参考にしてください。たとえば、クラスが店舗の場合、 goods
プロパティには明らかに外部顧客がアクセスできる必要があります。しかし、 moneyInCashRegister
変更できるのは明らかに店舗内の従業員だけです。
結局のところ、顧客は、 fetch
おろか、 put
使用してもレジにアクセスすべきではありません。
「 private
修飾子なしでもどのプロパティにアクセスでき、どのプロパティにアクセスできないかを完全に理解している」と主張する人もいるかもしれません。ただし、アクセス レベル修飾子の記述は設計の一部です。 3階に外に通じるドアがある家の設計図は作らないでしょう。
そして、決して開かないように提前准备してください。結局のところ、他の人もあなたのコードを食用する概率性があります。
ちなみに、同様の状況がvar
とlet
にも存在します。繰り返しますが、値を変更するかどうかすぐに確信できない限り、常にlet
を使用してください。
アーキテクチャのシンプルさ
初心者は事前にすべてを計画しようとする傾向があることに気づきました。これは賞賛に値しますが、開発者は経験不足のために間違いを犯すことがよくあります。彼らは、過度に複雑なマネージャーを事前に準備します (通常は、)多くの複雑なメソッドを使用しますが、最終的には使用されません。その結果、コードの量と複雑さが増大します。
便利店加盟な既製のサービスのように見えましたが、プログラマーは問題と誤解だけを抱えて終わりました。建築も同様です。
私の主張を伝えるために、プログラミングの歴史を簡単に説明したいと思います。 1960 80年代の終わりまでに、プログラミングの人気が高まり始めると、プログラムのサイズも増加しました。ご存知のとおり、プログラムのサイズが大きくなると、コードの行数も増え、複雑さが増し、プログラムを理解是什么することが難しくなります。
この問題に対処するために、プログラムをより小さく方法しやすい地方に拆分できる関数と手順である構造化プログラミングが登場しました。コードはモジュール化され、再使用或者になり、より正确理解しやすくなりました。
構造化の出現により、プログラムはさらに成長し、サイズと複雑さの限界に再び達しました。したがって、1970 朝代後半から 1980 朝代前半までに、オブジェクト对准プログラミングのアプローチが转变成されました。このソリューションにより、柔軟でスケーラブルなシステムの構築が将になり、ますます複雑化するタスクに対処できるようになりました。
次の 10 年間、私たちはコンピューター ゲームのブームを目の当たりにしました。ユーザーのアクション (クリック、プレス) に対する反応が注重であることが判明し、イベント駆動型プログラミングの出現につながりました。
そして、Web アプリケーションとデスクトップ アプリケーションのコードを归置するために、同じデータをさまざまな観点から配些置する一定がある場合に、MVC パターン (つまり、モデルをその視覚的表現から分離する) が登場しました。
あなたは、問題が発生する -> 解決策が現れるという主なアイデアを理解しました。問題→解決策。
では、なぜ不忘初衷者プログラマーは、問題がまだ発生していない時期にソリューション (アーキテクチャ) の適用を開始するのでしょうか?チュートリアルでは、少なくとも MVP を選択することをすぐに提议します。 1 つまたは 2 つの频幕のテスト タスクでは、常に MVC を适用しないように自定义します。
面接では、同じ 1 つまたは 2 つの照片を的使用していくつかのプロジェクトを制成した人に、VIPER の問題について質問されます。まだ問題に面临していないのに、どうやってその問題を知ることができるのでしょうか?
人々はアーキテクチャの文脈でテスト更容易性の利便性についてよく話しますが、テストを書いたことはありません。仮にそうしていたとしても、それは何らかのチュートリアルにのみ基づいており、実際のアプリケーションに結び付けずに単体テストのみに视点を当てています。
彼らは MVP スキームを簡単な言葉で説明できますが、 ViewInput
やViewOutput
などの似た名前のプロトコルになると混乱することがよくあります。心の底では、彼らはすでにこれらすべてをオーバーヘッドとして認識しています 🙄🤯
結論: 自分で問題を引き起こさないでください。 MVC を恥じないでください。コントローラーが大きくなりすぎる場合、または请谅解な点が発生した場合は、新しいアプローチを探す時期が来たことがわかります。
UIのシンプルさ
フロントエンド開発は不忘使命者にとってドーパミンの楽園です。コードを書くとすぐに結果が图片に觉得され、報酬 🍭 を受け取ります。それは間違いなくモチベーションになります。ただし、このコインには裏もあります。不忘使命者は、すぐに過度に複雑な UI を作为しようとすることがよくあります。
さらに、複雑な機能は複雑な UI に従う傾向があります。現在、SwiftUI によってタスクが簡素化されていますが、実際の進歩が見られないまま、付加機能の追加に多くの時間を費やす机会性があります。
私はチームを組んで一つのプロジェクトに取り組むコースでiOS開発を学びました。私のチームでは、ダーク モードのフォントと色を選択することからアプリ開発を始めることを提议した人がいました。
全体として、彼はコース全体をそれに費やし、フォントと色が素晴らしいものになったことは注目に値します。しかし、その間、その男は実際のコードをほぼ 0 行しか書きませんでした。
アプリケーションの美しさと機能性が相对に主要であることは間違いありません。最終的には、この点に時間を費やす有必要があります。もっと単純なものから始めるのが良いでしょう。 MVP (実用不大限の製品) を開発し、最も主要な機能に聚焦を当て、そこから立ち上げます。
のここに適用されます — アプリケーションの基礎を作为してから、追加機能を追加します。逆のアプローチでは、複雑なニュアンスに対処し、壊れ続けるメイン機能に常に対処することになります。
モバイル開発の初心不忘者にとっては、複雑なソリューションを時期尚早に採用してしまうリスクがあります。フロントエンド開発の視覚的な報酬は优势的ですが、多くの場合、単純な MVP から始める方が賢明です。
歴史的な傾向は、真の課題に対応してソリューションを進化させる必不可少があることを示唆しています。
基础原則を表述し、現実全世界で問題が発生したときにそれに対処することは、効果的な開発にとって主要です。
でも公開されています