なぜ非記述的な内部コードネームを使用するのですか?[閉まっている]


16

コードネームの使用はかなり普及していると思います。当社もそれらを使用しています。

しかし、私の主な懸念は、これらの名前が通常どこにも文書化されていないことです。そしてその意味は口コミによって広まります。また、名前は、ツールの機能や名前が付けられたエンティティとは関係ありません。

内部のテストマシンは星座にちなんで名付けられ、公共のサーバーはギリシャの神々にちなんで名付けられているというパターンがあります。また、プロジェクトは、場所またはランダムに選択された映画スターの名前またはキャラクター名にちなんで命名されます。しかし、マシンがWindowsであろうとLinuxであろうと、名前から直接入手できる情報はありません。32または64ビットサーバー。またはプロジェクトの目的は何ですか。

誰かが「Gandalf」プロジェクトや「Callanish」プロジェクトなどのプロジェクトを分岐させたというVCSのコミットメッセージを見ると、私はただひどい気持ちになります。同じ理由で、通常、関数や変数にそのような名前を付けません。

少なくとも新しいエンティティについては、よりわかりやすい名前を使用することを提案しましたが、非常に強い反対に直面しました。明らかに、私以外の組織の誰もがそのようなものを命名するのが大好きです。

では、なぜ記述的でないコードネームを使用するのでしょうか?

誤解しないでください。プログラムのバージョンやマイルストーンの命名に問題はありません。また、マーケティング上の理由から素晴らしい製品名を持っています。しかし、他のすべての場所は説明的な名前を見たいと思います。

編集:

コンテキストを提供するために:Gandalfは、コードを64ビットに移植するプロジェクトです。CallanishはAndroidに移植するものです...前者のブランチを64bitporting、後者のandroidportingを呼び出したいです。添付するターゲットバージョンを示すサフィックスが添付されている場合があります。だから誰もがそれが何であるかを名前で知っているでしょう。

問題のサーバーは、製品をテストする仮想マシンイメージです...しかし、実際に実行されている物理マシンはわかりません。したがって、それらをwindowsxp_32、windows7_64、debian_32またはsolaris_64と呼ぶのはまったく問題ありません。


6
あなたを説明するものは、他の誰かにとって十分に説明的ではないかもしれません。名前は名前です名前は名前です 混乱や意見の相違はありません。
ロビーディー14年

1
非常に多くの回答がありますが、「サーバーの名前を目的別に、またはギリシャの神々に付けるべきですか?」という質問をした場合、目的が疑われる/期待されると思います。もちろん、fileserver4は、どのサーバーがftpであるかを思い出す際に、Aphroditaよりも覚えやすいです。
ヴォラック14年

2
この質問はソフトウェア開発とは無関係であるため、トピック外のようです。
マイクパートリッジ14年

4
名前って何?私たちが他の言葉でバラと呼ぶものは甘い香りがします。
カレブ14年

3
Gandalfブランチが単体テストフレームワークのコードネームではないことを願っています。それを通過するものはすべて通過しないものとします!
corsiKa 14年

回答:


25

明確にするために十分な詳細をリストするのに1日かかり、特性は変化する可能性があるため、特性によって人々を参照することはありません。彼らが髪を切ったらどうしますか?代わりに、名前を付けます。また、人々はランダムなシンボルのストリームよりも単語を覚えるのが得意です。

免責事項:これには、質問による意見と逸話が含まれます。

私が数年前に働いていた場所では、すべてのサーバーは月と体の部分にちなんで命名されました。「レア」、「ミランダ」、「肺」、「腎臓」など

あなたと同じように、これは少し馬鹿げていると判断し、「arc-sql-w-4」や「lon-web-lin-2」などの「説明的な」名前に変更する必要があります。これには多くの反対があった。しかし、それは通過しました。すべての名前を変更しました。

それで何が間違っていたのでしょうか?

以前は、「ハート」で制御される「ヘッド」または「タルボス」がXのアプリケーションサーバーであったことを思い出すことができるため、どのデータベースがプライマリデータベースで、どのマシンがスレーブであるかを頭の外で知っていました。ここで、探している機械を部分的にではあるが完全には説明していない記号の不明瞭な山を思い出さなければなりませんでした。「lon-web-lin-1」は製品Aのアプリケーションサーバーであり、「lon-web-lin-2」は製品Bのアプリケーションサーバーであることを頭のルックアップテーブルで知る必要がありました。

FartDownTrousersForALivingDoYouのようなパスワードを使用する必要がある理由と似ています。43gH5#€1の代わりに。人々は単語を覚えるのが得意であり、ランダムなジャンクの山ではありません。言葉は、物事を指す記号です。

別の(おそらくより実用的な)問題は、DNSとサーバー名をそれらの機能に結び付けていることです。つまり、名前を変更せずに関数を変更することはできません。私たちにとって、これには物理的な場所とオペレーティングシステムも含まれていました。これはひどい痛みです。

また、これが最後のポイントです。名前ははるかに楽しいです。

プロジェクト名はどうですか?

さて、「Project Gandalf」の代わりに何を提案しますか?「関数Xのプロトタイプを作成し、それを製品に進化させることができるかどうかを確認します」?プロジェクトのスコープが変更された場合、プロジェクトの名前を変更しますか?繰り返しになりますが、名前は物事を指す省略記号です。


4
非説明的な象形文字の説明メタファーを変更したようです。どのサーバーでどの製品が実行されているかを明確にする命名パターンを適用する必要があります。それが「記述的」であるということです;)
back2dos 14年

9
@ back2dos-新しいアプリケーションがサーバーにデプロイされるか、既存のアプリケーションが別のサーバーに移動する場合、影響を受けるすべてのサーバーの名前を変更しますか?(コード名を使用していないため)製品Aの名前が変更された場合はどうですか?その名前がクライアントに保存されているすべての場所を変更しますか?または、変更の範囲を最小限に抑えるために、誤解を招くDNSエイリアスを残しますか?
ジャスティンケーブ14年

5
@ back2dos-新しいアプリがデプロイされるたびにサーバーの名前を変更(およびすべてのクライアントを更新)することは、非常に短時間で非常に苦痛になります。10番目のアプリを特定のサーバーに展開するとどうなりますか?特定のサーバー名への参照を持つクライアントマシンが何百もある場合はどうなりますか? db3.todoappサーバーがを処理するだけなら、より有益ですtodoapp。マーケティング部門がアプリを「Organizer Pro」と呼び、サーバーに他の8つのアプリがある場合、名前の管理はかなり複雑になります。
ジャスティンケーブ14年

4
また、マシンに複数の機能がある場合はどうなりますか?名前が手に負えないほど大きくなるか、正確に記述できない。
トム14年

2
back2dosに同意しないことは困難です。「説明のない象形文字」は、例を読むときに考えていたものです。区別役割アイデンティティ back2dosの作るも特に関連があります。私の会社では、サーバーの役割に応じてサーバーに名前が付けられており、「http-blog-db-failover」などの名前は「Hermione」よりもはるかに明示的であるように見えます。MongoDBからCouchDBまたはマーケティングがブログをホストするWebサイトの商品名を変更することを決定した場合。
Arseni Mourzenko

10

プロパティによって物に名前を付けることは、根本的に悪い考えです。その理由は、プロパティは定義上、変更可能な現象であるが、プロパティが変更されても物のアイデンティティは変わらないためです。

ファイルサーバーをLinuxに移行する必要があると誰かが決めた場合 名前が「Apollo」であれば、それは問題ではありません。名前が「windows」を参照している場合は、誤解を招くものになるか、多大な費用またはリスクをかけてどこでも変更する必要があります。新しい出力形式を導入していますか?神の愛のために、それを「newFormat」と呼ばないでください!それはなり最終的に再び交換すること、さらには新しいフォーマットがそれを区別するために、より説明的な名前が必要になります。後で「4」にブーストできるように「3」と呼ぶか、「プラチナ」にアップグレードできるように「ゴールド」と呼びます。

(追加の理由は、情報のナゲットで構成された名前が非常にthatいということです。「PC-Marketing-Windows7-143」という名前のコンピューターで作業したい人はいません。しかし、主なポイントは、アイデンティティ/プロパティの分割です。)


4
説明的な名前はプロパティではなく目的を説明します。出力を表示する関数を呼び出すと、Hermesyesの場合よりも認識しやすくなりfunctionWithTenLinesOfCodeます。個人的には、私はそれを呼び出しprintます。
back2dos 14年

back2dos @ OPが与える例が同等のものを記述しているようだprint_left_aligned_to_CRT_monitor()
Izkata

@Izkata:認めざるを得ないCathy()。注:Guns&Rosesの歌詞を引用する関数名と変数名を含むプロダクションコードを見たことがありますが、バフィーを参照する変数名と関数名を含むプロダクションコードを書いた罪があります。
スリーブマン14年

10

私の経験では、3つの理由があります。

  1. 似たような名前をたくさん付けなければならないとき、それらすべてに固有の説明的な名前を見つけるのは難しいかもしれません。人々はそれを参照するための短いユニークな方法を必要とし、数字を使用するよりも名前を使用する方が優れています(数字が非常に短い場合を除く)。それに名前を付けると、それはあなたの心の中に個性を帯びる傾向があるので、サーバーガンダルフはSERWIN15AB23よりもフレーク状の電源コネクタを持つものであることを覚えているでしょう。また、2つをタイプミスと混同する可能性も低くなります。

  2. 命名プロセスは楽しいものです。一部の企業は投票でそれを行います。他の人はユニークな名前を思いつくのが好きです。親に聞いてください。

  3. 外部プロジェクトの場合、名前が何であるかを決定するのは通常マーケティングであり、通常は出荷前にそれを行います。Microsoftはいつ最新のOSを「Windows 10」と呼ぶことにしましたか?常にそう呼ばれていたとは思えない。このプロジェクトは、それよりもずっと前から開発されている可能性があり、場合によっては、会社の外の人が何を話しているのかわからないように難読化することもできます。


5
また、問題のタスクに合わせて名前を調整できることも追加する価値があります。ガンダルフはサーベラスは、ファイアウォール、ヘパイストスのdevのサーバーなどであってもよいし、「魔法が起こる」ビルド・サーバであるかもしれない...それは機能に関連付ける数字には非常に困難です
Liath

1
ちなみに、「Windows 10」の内部名は実際には「Windows NT 6.4」です。しかし、マーケティングでは、「Vista」とも呼ばれる6.0が、オペレーティングシステムのカーネルが大幅に再設計された最後のバージョンであることを決して認めませんでした。
フィリップ14年

@Philippは、Windows 7マシンのコマンドラインに「ver」と入力するだけです。6.1(vista SP1は常に冗談でした)、Windows 8が頭の外にあるかどうかはわかりません。
リース14年

Windowsの8.1プロ(私はこのPCがアップデート1を持っていない確信している):6.3.9600 msdn.microsoft.com/en-us/library/windows/desktop/...
WernerCD

@Philipp AFAIK、これは後方互換性の理由のために行われたもので、カーネルがどれだけ変化したかを反映していません。
svick 14年

6

記述的な命名は難しい™です。使用できる単語のリストが自動的に付属するテーマを既にお持ちの方がはるかに簡単です。

同じ名前のオブジェクトに複数の名前を付けるfoo1.6foo1.2、など、すぐに混乱を招き、ミスを起こしやすくなります。たとえば、テストを実行する必要があるVirgo場合、たまたまテストを行うと間違いにすぐに気付くでしょうCancer

また、命名規則が展開され、音楽ジャンルに基づいて会議室の名前を付け、カフェテリアに名前を付けるという決定が下されたときにも、楽しい会議になりますSalsa


Descriptive naming is hard™, it's much easier if you already have a theme which automatically comes with a list of words you can use.本当です。しかし、それが簡単だからといって、長期的には良いというわけではありません。あなたが言っていることは、適切なAPI設計を行わないのと同じです。機能をチャーンアウトする方がずっと簡単だからです。
back2dos 14年

3

これは、高コンテキストまたは低コンテキスト文化に関連している可能性があります。すべての企業、組織、またはチームには独自の文化があります。ハイまたはローコンテキストカルチャとは、文化が明示的に関連付けるのが好きな情報量と、コンテキストから取得することが期待される量を意味します。

文化的な参照からの名前ですべてのサービスに名前を付けると、ある程度の柔軟性が得られますが、明示性もありません。名前、つまりサービスのコンテキストを補足する口コミまたは「部族の知識」が必要です。たとえば、「fizzbuzz」サーバーや「marcopolo」サービスがあり、だれも何をしているのかわからないが、トラフィックを得るため、何かをしなければならない状況があります。

私はコンテキストの低い人なので、サーバーまたはサービスの目的に関するコンテキストを提供する単純で明示的な名前を選ぶ傾向があります。また、コードを読みやすくするためにコードの命名に注意する「自己文書化コード」を作成します。

しかし、私は現在、すべてのサービスがTransfomersにちなんで命名されているハイコンテキストショップで働いています。はぁ。少なくとも彼らは一貫して名前を使用しています。

したがって、それは文化的価値のように見えますが、技術的慣行は文化的な好みに適応します。

ハイコンテキストもおもしろい場合があり、その中には何らかの価値があります。


2

重要な質問は次のとおりです。記述的なものは何ですか?他の答えは、記述的でないものを示す素晴らしい仕事をしました。

記述性は、役割目的によって物事を呼び出すことから来ることを確立しましょう彼らがすることによって。たとえば、「カッター」が何をするかはかなり明確です。今では、x、レーザー、またはナイフになります。それほど重要ではありません。また、レーザーは「ポインター」、couldは「デコレーター」、ナイフは「パンクチャー」にもなります。

したがって、他の人が指摘したように、何かのプロパティとそれが果たすタスクとの関係は比較的緩やかです。したがって、OSがサーバー名の一部であることは説明的ではなく、真の目的から逸脱しています。

コンポーネントがXを達成する方法に取り組むことがあなたの仕事でない限り、それはあなたの仕事DoesXではありません。それがあなたの仕事なら、とにかくすぐにそれに直面します。

ラチェットフリークが指摘したように、説明的な名前を見つけるのは難しい場合があります。しかし、多くの場合、それは物事が何をするのを理解しいないことのサインであり、あなたは名前を付けなければなりません。その理解を得る前に、あなたはおそらくあなたが知らないことをどのように行うのか自分に関係するべきではありません;)


+1、しかし例を追加するのはどうですか?質問にコメントするときに使用した例を使用できます(http-blog-db-failoverブログをホストするWebサイトのフェールオーバーデータベースをホストするマシンの場合、LinuxからWindowsまたはMongoDBからCouchDBに移動しても、マーケティングの決定には影響しません。 )
Arseni Mourzenko 14年

2

コードネームの理由の1つは難読化です。プロジェクトの名前を無意味にすれば、他の誰もあなたが話していることを理解することなく、それについて公に話すことができます。

同様に、サーバーに意味のない名前を付けた場合、許可されたユーザー以外は誰も何を知っていることはありません。


2

最初の理由は、短くて覚えやすいことです。プロジェクトの名前を何回言ったり書いたりするかを考えた場合、誰もが知って理解している短い名前があると、かなりの時間を節約できます。

2番目の理由は、友情を構築することです。チームが名前を選択できるようになった場合、全員が好きな名前を選択できます。微妙ですが、「Q3 Accounting Updates」という名前のプロジェクトではなく、ViperまたはGimleyまたはBobaまたはBugattiという名前のプロジェクトで作業している場合、チームの士気が高まります。たくさんの車愛好家とチームで働いていた友人がいました。彼らのお気に入りのプロジェクトキックオフの儀式は、プロジェクトコード名として使用する車を選ぶことでした。


2

私はいつもこれが人々を楽しませるので、主に行われているものだと思ってきました。人々はメディアによって条件付けられ、暗闇の中で動き回るのと、昼間で動作するのとに価値を付けます。5歳のとき、「特別エージェントおそ」がいます。15歳でジェームズボンドです。秘密は、人々の平凡な活動(たとえば、コンピューターのプログラミング)に重要な空気を与えます。

これに関連して、誰かがMicrosoftコードネーム(http://en.wikipedia.org/wiki/File:Windows_Longhorn_logo.svg)であったときに「Longhorn」のロゴを作成しました。マーケティング活動の一部となることを意図していないコードネームのロゴを誰かが作るのはなぜですか?繰り返しますが、人々はこの種のことをします。Photoshopで遊ぶのは、実際の作業を実際に行うよりも簡単です。


1

知らないシステムがあるかもしれません。
私が働いていたある会社は、すべてのサーバーでノーベル賞受賞者の名前を使用していました。異なるノーベル賞は、異なるカテゴリーのサーバーを示していました。
テストサーバーは数学の勝者、データベースサーバーの文学の勝者、薬の勝者のメールサーバーなどにちなんで命名されるかもしれません。
命名規則に精通していない人にとっては、名前は完全にランダムに見えました数十年にわたって数百人のノーベル賞受賞者)。

私は自宅で同様のシステムを使用し、ジェット戦闘機にちなんでコンピューター、爆撃機にちなんでサーバー、火山の後のディスクボリュームに名前を付けました。

同じことは、ソフトウェアの一部、ツリーの後に本番バージョン、花の後にベータバージョンなどで行うことができます。

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