「コードスタイルとデザインパターン」についてのプレゼンテーション[終了]


9

私の会社(小規模、3つのオフィスで約40人)は、開発者の1人が技術的なトピックについてのプレゼンテーションを主催する「開発者ワークショップ」をオンラインで行う場合があります。それは必ずしも私たちの仕事に関するものではなく、単に皆が彼らのスキルと理解を向上させるのを助けるためです。

私は次のものをホストするように頼まれました、そしてトピック(私が提供したリストから選ばれました)はコードスタイルとデザインパターンです。私はそれらがそれほど密接に関連していないことを知っていますが、私に耐えます。私のコードベースには改善の余地のある場所がたくさんあります。その一部はDailyWTFに適格な場合さえあるので、このプレゼンテーションをできるだけ効果的にしたいと思っています。問題は、1時間で何をカバーするかが正確にわからないことです。

私の最初のアイデアは、例として独自のコードを使用して、「これを実際に作業に適用してください」という要点を理解することです。しかし、トピックはとても広いです。

私たちのコード(PHP)のいくつかの問題は次のとおりです。

  • 最小限のオブジェクト指向。最近は改善していますが、グローバルな機能はまだたくさんあります。物を見つけるのにしばらく時間がかかります。
  • グローバル構成(私が推測する意見)。$ GLOBALS ['blah']は、ほぼすべてのファイルに散在しています。
  • 一貫性のないブレーススタイル。最小限に聞こえますが、これにより実際には5日前に構文エラーが発生し、昨日現在でも修正されていません。
  • 非効率な構成。一部の地域での実行時間を70%削減するいくつかの基本的な改善を行うことができました。

私はこのことを、同僚に無礼に聞こえることなく、できる限り役立つものにしたいと考えています。では、「スタイル」のどの側面に焦点を当てるべきか、そしてどのデザインパターンが説明に最も役立つかもしれませんか?


1
これは非常にオープンなトピックであり、確実な結論を出すのは困難です。プレゼンテーションのポイントは、特定の基準に従うように説得するのではなく、同僚に現在の問題を認識させることであることを明確にしたいと思います。あなたの質問であなたがしたポイントをリストして、なぜこれが悪い習慣であり、起こり得る結果、すなわち技術的負債であるかの例を挙げてみませんか。ReSharperやFxCopなどのツールについても触れてください。
2011年

回答:


8

このコードを書いている人の前のプレゼンテーションで実際のコードを使用する場合は、十分に注意してください。

せいぜい、全員の前で指を指してチームを混乱させるでしょう。そして、「あなたは本当に私の目を開いた」の代わりに得られるものは、「みんなの前でWTFですか?自分のコードdumbAさえ見ましたか?」

実際の例を挙げますが、それを変更するか、それを書いた人にたどることができないようにしてください。または、あなたが知っている人から実際のコードを取得するだけでなく、あなたの古いコードのいくつかを取得し、これらの人々とユーモアと冗談の中で遊んでください、スタンドアップスタイル:)

元の質問に答えるために:読みやすさに関するすべて:可能な限り少ない引数の関数、OOP、長くて詳細な変数名とコメント。


2
+1:コードレビューは外交と裁量を伴うデリケートな操作であり、それ自体をデモンストレーションの目的で使用するべきではありません。
Matthieu、2011年

4

組織にバグ追跡システムがあると思います。リポジトリから厄介なバグをいくつか取り出し、それが発生した理由に関する修正レポート(グローバル変数が機能しなくなった、関数が意図していないことを行っているなど)を確認し、この問題を回避するのに役立つ可能性のあるコーディングスタイルと設計パターンについて説明します。 。

この少しの調査を行うのは難しい作業ですが、これは、あなたが提示しているものを実際に機能させるための最強の方法です。


2

「まだたくさんのグローバル機能」。

まず、リストを取得します。完全が理想的です。

次に、このリストを潜在的なクラスに分割します。クラス定義について考えます。

実際のプレゼンテーションでは、これらのグローバル関数の束を吸収する、最も大きく、最も明白で、最も目障りで、最も疑う余地のない潜在的なクラスを選択します。

ディスカッショントピックとして。あなたはアイデアを持っています。コンセンサスを得る必要があります。途中で質問に答えます。そして、なぜそれが単一クラスのオブジェクトであり、グローバルを共有するランダムな関数の束ではないのかを理解してもらいます。

次に、これについて話し合った後、彼らがこのクラスだけを理解し、どのようにコンテンツに到達したかを理解します。

プロジェクターの電源を入れます。

入力を開始します。

コードを修正します。単体テストを再実行します。

デザインパターンとコーディングスタイル、および作業の完了。1つのパッケージにすべて。


2

1時間で、最低限の基本を理解できるようになります。

各トピックから3つのものを選び、それらに焦点を当てることをお勧めします。スライドを5〜7語に制限し、他の人がスライドを読む代わりにあなたの声を聞くようにします。構成された例を使用します(したがって、他の人の提案に従って、人のつま先を踏まないでください)。詳細を知りたい人のための練習として、最後に参考文献を示します(URLは本より優れています)。プレゼンテーションの後にスライドをイントラネット投稿します。(中かっこの問題については、コードフォーマッタを使用してください。これはおそらく戦う価値のある戦いではありません)

おすすめのトピック:

  • コーディングスタイル

    • PHPでのOOPの禅:スタイルによるコーディング!
    • グローバル機能がコードガンを引き起こす5つの理由
    • 名前って何?慣習と常識(または私に考えさせないで!)
  • デザインパターン

    • コード内のいくつかのGoFパターン。はじめに
    • パターンは単なる道具であり、福音ではない
    • ベストとワースト:パターンとアンチパターン

注:グローバル設定は回避が難しい場合があります。1つの簡単な解決策は、それらへのすべての参照をinit関数に入れることです。

警告:私はワードプレスを壊し、マイナーなWebサイトの修正を実行するのに十分なPHPしか知らない


1

プレゼンテーションで実際のコードを使用することについて。使用する場合は、良い例にのみ使用し、悪い例は絶対に使用しないでください。悪い人は自分で作るか、ウェブで見つけてください。これにより、同僚は自分の仕事に誇りを持ち、その認識を得ることができます。また、悪質な開発者として特定されたために怒ったり、当惑したりする可能性のあるシナリオも回避します。


0

コーディングスタイルは悪い習慣です。取り除くのが難しい。誰かに悪い習慣を落とさせる最良の方法は?それがどれほど醜く、嫌で、有害であるかを彼に直接見てもらいましょう。

彼らに悪いコードを見せて、何が悪いのか尋ねてください。少し考えてから、「Aaahaaa!」エッジケース(おそらくフェンスポストの問題でしょうか?)

あなたの連中は定期的に悪いデザインの問題に苦しんでいるようです。グローバル関数が無害な方法で変更されて、それに依存する他の関数に悪影響を与えるが、変更されたことを知らない一例を示します。グローバル変数を使用した従来の同期問題を示します。

彼らを退屈させたり、防御的な立場を取らせたりするのではなく、面白​​い方法で彼らを引き付けます(この男は私たちを批判するのは誰ですか?)。たとえば、2つのステップ(1-妻の名前を入力)(2-グローバルに保存)で機能を実行する関数を示します(3-夫の名前を入力し、グローバルから妻の名前を取得してデータベースに保存します)(4-笑って同期が悪いと、男性は「新しい」妻を持つことになります)。

私たちは私たちが考えていることをプログラムしているので、プログラミングスタイルについて思い込みを得ることができます。プログラミングデザインが批判されたとき、一部の人々はそれを彼らの考え方に対する侮辱、したがって彼らの知性と見なします。

あなたの悪い機能を引き受けて、コードの所有者を困らせないようにいくつかの変更でそれを隠し、それを改善するためにオーディエンスと協力して対話してください。結果:翌朝のソースコード管理システムは非常に忙しいので、コーヒーを片手に変更ログを見てください。

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