ソフトウェア工学

システム開発ライフサイクル内で働く専門家、学者、学生向けのQ&A

15
私たちのコーディング標準の1つが嫌いで、それは私を狂気にさせます、それをどのように処理するのですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 免責事項:タイトルが示すほど誇張されていませんが、それでも私を不快にします。私は正直に言いたいだけなので、一粒の塩でそれを取る。私が話しているコーディング標準について話しているふりをしてください。 編集:私はそれが好きではないという事実は、私はそれを使用したり、それを強制しないことを意味するものではありません。 私は、あなたが好きではない標準を乗り越える方法の精神でこの質問をすることを決めました、それがどのように変更できるかをよりよく議論する方法の助けを得るためではありません(この最後の部分に関するコメントは大歓迎です)。その上、私は大企業で働いていますが、これほど長く生きてきて、ほとんど問題にならないような変化は起こりそうにありません。 標準は、専用線の開始中かっこ標準です。 somefunction() { //... } *明らかに優れた*の代わりに(冗談/欲求不満の音に注意してください): somefunction() { //... } 標準に対する私の個人的な主張: コードが肥大化する:余分な不要な行 入力が難しい:これはおそらく私が標準に苦労しているだけかもしれませんが、余分なキーストロークがそれほど悪くないことは知っています。 読みにくい:関数宣言、ifステートメント、または他のスコープスタッキングステートメントの読み取りを開始しますが、開き括弧を探す必要はありません。この標準のネストされたブロックは、何らかの理由で私を怒らせます。 Microsoft IDEのバックグラウンドから来た人々が使用します。パラダイムによってそれを取り入れるだけでなく、標準の背後にある議論された理由(またはそれ以上)があるべきだと思います。 彼らの議論(および内部的に彼らに反論する私の方法): ブロックの開始位置と終了位置がすぐにわかるので読みやすくなります。ブロックの所有者がわからない場合、ブロックの良さはわかりません。逆読みする必要があります。 私はMicrosoft IDEでそれを使用し、それが好きでした:うーん...大丈夫? それは標準にあります:* cringes * 私は特定の基準に対して意見を述べる姿勢に苦しんでいる唯一の人ですか?、これらをどのように乗り越えましたか?この特定の基準がどうあるべきかについてのあなたの意見は何ですか?

7
まだ初期開発中のコードをGitHubにプッシュしても大丈夫ですか?
非常に初期の開発状態にあるプロジェクトがいくつかあります。彼らは完成に近づいていませんが、私はGitHubでそれらを(公開リポジトリとして)ホストしています: 複数のコンピューターがあり、どこからでもコードにアクセスしたい コードのバックアップが必要です 誰かが何らかの方法で共同作業をしたい場合は簡単にしたい 貧乏人のプロジェクト管理ソフトウェアとしてGitHub Issuesを使用しています 開発のごく初期の段階でも、GitHubでプロジェクトを公開しても大丈夫ですか?OMG this is total BS, this code is so bad!磨かれていない/まだ開発中/テストされていないコードを見ながら、誰かがやって来て言うことを少し心配しています。 新しい公共プロジェクトを開始するときのプラクティスは何ですか?表示すべき実質的なものがあるか、GitHubで直接リポジトリを作成してそこから開始するまで待機しますか? GitHubこの記事全体で使用しましたが、これはあらゆるコードホスティングサービスに適用されます。

5
よく知られているPowerShellのコーディング規則はありますか?
PowerShellでプログラミングする場合、明確に定義された規則はありますか? たとえば、長期的に維持されるスクリプトでは、次のことを行う必要がありますか? 実際のコマンドレット名またはエイリアスを使用しますか? コマンドレットパラメーター名を完全にまたは部分的にのみ指定します(dir -Recurse対dir -r) コマンドレットの文字列引数を指定するときは、(引用符で囲みますNew-Object 'System.Int32'対New-Object System.Int32 関数とフィルターを作成するとき、パラメーターのタイプを指定しますか? (公式の)正しいケースでコマンドレットを作成しますか? のようなキーワードのBEGIN...PROCESS...END場合、大文字のみで記述しますか? MSDNにはPowerShellのコーディング規約ドキュメントが欠けているようですが、そのようなドキュメントはC#などに存在します。

5
状態のないインスタンス化可能なクラスが非常に多いのはなぜですか?
C ++とJavaの世界には、状態のないインスタンス化可能なクラスがたくさんあります。 私は本当に人々がそれをする理由を理解することはできません。C++の無料の関数で名前空間を使用するか、Javaのプライベートコンストラクタと静的メソッドのみを持つクラスを使用できます。 私が考えることができる唯一の利点は、後で特定の状況で異なる実装が必要だと判断した場合、ほとんどのコードを変更する必要がないことです。しかし、それは時期尚早な設計の場合ではありませんか?それが適切になった場合に/後でクラスに変えることができます。 これは間違っていますか?すべてをオブジェクト(つまり、インスタンス化されたクラス)に入れないと、OOPになりませんか?それでは、なぜC ++とJavaの標準ライブラリに非常に多くのユーティリティ名前空間とクラスがあるのですか? 更新: これまでの仕事で確かに多くの例を見てきましたが、オープンソースの例を見つけるのに苦労しています。それでも、私は人々がなぜそれをするのか、それがどれほど一般的であるのか疑問に思っています。

5
.NETには、文法を定義してプログラミング言語を生成できるものがありますか?
私は、教授から最終プロジェクトのDSLを作成するように依頼されたコースを持っています。彼はEclipseを使用した最初のコースxTextで私たちを紹介しました。これは新しいコースですが、ドメイン固有言語の意味についてはまだ少しあいまいです。 これが私の現在の理解です。ドメイン固有の言語は、ソフトウェア開発の特定の問題のために作成された言語です。DSLの例にはPHP、SQL、JavaScriptがあり、反対にJava、C#、C ++、Rubyなどの言語があります。 私が間違っている場合は私を修正してください。 私が知りたいこと:Xtextに似た.NET / Visual Studio用のツールがあり、文法を定義し、それに基づいてアクティビティ図でプログラミング言語を生成することができますか?
18 .net  dsl 


4
素人の用語でグラフとは何ですか
コンピューターサイエンスにおけるグラフとは何ですか?素人の用語で好ましくは。 私はウィキペディアで定義を読みました: コンピューターサイエンスでは、グラフは抽象データ型であり、数学からグラフとハイパーグラフの概念を実装することを目的としています。 グラフデータ構造は、ノードまたは頂点と呼ばれる特定のエンティティの、エッジまたはアークと呼ばれる順序付けられたペアの有限(および場合によっては可変)のセットで構成されます。数学のように、エッジ(x、y)はxからyを指すか、またはxからyに向かうと言われます。ノードはグラフ構造の一部であっても、整数インデックスまたは参照によって表される外部エンティティであってもかまいません。 しかし、私はあまり形式的ではなく、理解しやすい定義を探しています。

1
Haskellレコードの進捗はどうですか?
最近、私はHaskellの記録の問題、特にフィールド名の一意性に再び出会いました。(痛みです...) 私はすでに読んハスケル内のレコードのための提案を SPJとグレッグ・モリセットから、その最後の更新は2003年にされた 別の紙と呼ばれるHaskellのための軽量の拡張レコード SPJからとマーク・ジョーンズはさらに古いです:それは1999年にHaskellのワークショップからです。 Haskellに新しいレコードを提供するプロセスが進展したかどうかは疑問です。 誰かがそれについて何か知っていますか?

10
私の父は医者です。彼は、プログラミングのバックグラウンドなしで、重要ではない患者情報を保存するデータベースを書くことを主張しています[非公開]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 ですから、私の父は現在、FileMaker Proを使用してデータベースを「ハッキング」する過程にあります。FileMakerProは、彼の小さな(4人の医師)実践のためのGUIベースのデータベース作成ツールです。このデータベースは、医療機器からの報告の負担を軽減するために使用され、非常に不器用なプロセスを合理化します。 彼にはプログラミングのバックグラウンドがなく、物事を正しく学ばないように全力を尽くしているようです。彼は重複したデータ型を持ち、データベースによって強制される関係(外部/主キー制約)を持たず、他にも多くの問題があります。Youtubeビデオを使用して、GUIツールを介してすべて手作業で行っています。 私の問題は、彼に100%成功させることを望んでいるのに、この種の決定を処理することは彼にとって適切ではないと思うことです。これらのトピックで何らかの教育を受けずに、一緒にハッキングされたソリューションは悪い考えだと彼に納得させるにはどうすればよいですか?彼は非常に頑固である可能性があり、彼はこれらのタイプの仕事を「子供の遊び」と見なしていると思います これにどのようにアプローチすればよいですか?それはそれでさえ悪い考えですか?または、メンテナンスの悪夢にならないように、これを処理するために適切なDBA /開発者を雇うべきだと思うのは正しいですか? NB:私は4年間の開発コンサルタントであり、苦痛を伴う顧客実装のシェアを見てきました。 更新: それで、数年後の今、この質問について考える時間がありました。父は、Google Docs、FileMaker Pro、およびいくつかのメールフックを使用してソリューションを実装することになりました。彼はすべてを自分で設定し、彼はそれから計り知れない価値を得ていると言います。 あなたが経験豊富な開発者であれば、おそらくその説明を読んで、しつこいでしょう。しかし、私は実際に全体からかなり良い教訓を学びました-人々は結果だけを気にかけ、実装ではありません。お父さんが気にしているのは、患者の情報を紙に手動で入力する必要がなく、代わりにGoogleドキュメントのフォームにすばやく記入できるということだけです。素晴らしいのは、彼が実践の中で自動化に専念するために、ジュニア開発者/オペレーション担当者を雇おうとしていることです。
18 database 

2
JavascriptがJSON.serializeではなくJSON.stringifyを使用するのはなぜですか?
"stringify" vs "serialize"について疑問に思っています。私にはそれらは同じものですが(間違っている可能性はありますが)、過去の経験(主にasp.netで)ではを使用しSerialize()、使用しませんStringify()。 Javascriptで簡単なエイリアスを作成できることは知っていますが、 // either JSON.serialize = function(input) { return JSON.stringify(input); }; // or JSON.serialize = JSON.stringify; http://jsfiddle.net/HKKUb/ しかし、この2つの違いと、なぜstringifyが選択されたのかについて疑問に思っています。 比較目的で、C#でXMLを文字列にシリアル化する方法を次に示します。 public static string SerializeObject<T>(this T toSerialize) { XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType()); StringWriter textWriter = new StringWriter(); xmlSerializer.Serialize(textWriter, toSerialize); return textWriter.ToString(); }
18 javascript 

4
管理言語とコンパイル言語の違いは?
コンパイルされた言語と管理された言語を区別しようとすると混乱します。経験から、私はほとんどがコンパイルされた言語をC、C ++と見なし、マネージド言語はJava、C#であると理解しています(明らかにもっと多くありますが、これらはほんの数例です)。しかし、2種類の言語の中心的な違いは何ですか? 私の理解では、使用する言語に関係なく、プログラムは基本的に低レベルのマシンコードに「コンパイル」されて解釈されるため、マネージ言語をコンパイル済み言語のサブセットにします(つまり、すべてのマネージ言語はコンパイルされた言語ですが、その逆ではありません)?

1
フレームワークを作成する際の依存性注入/ IoCコンテナープラクティス
多くのプロジェクトで.NetにさまざまなIoCコンテナー(Castle.Windsor、Autofac、MEFなど)を使用しました。彼らは頻繁に虐待される傾向があり、多くの悪い慣行を助長していることがわかりました。 特にプラットフォーム/フレームワークを提供する場合、IoCコンテナーの使用に関する確立されたプラクティスはありますか?フレームワークライターとしての私の目標は、コードをできるだけシンプルで使いやすいものにすることです。オブジェクトを作成するために、10行または2行だけでなく、1行のコードを作成したいです。 たとえば、私が気づいたいくつかのコードの匂いがして、良い提案がありません: コンストラクターの多数のパラメーター(> 5)。サービスの作成は複雑になる傾向があります。すべての依存関係はコンストラクタを介して注入されます-コンポーネントがオプションであるということはめったにありませんが(テスト中を除く)。 プライベートクラスと内部クラスの欠如。これは、C#とSilverlightの使用に関する特定の制限かもしれませんが、どのように解決されるのか興味があります。すべてのクラスがパブリックである場合、フレームワークインターフェイスが何であるかを伝えるのは困難です。それは私がおそらく触れるべきではないプライベートな部分にアクセスできるようにします。 オブジェクトのライフサイクルをIoCコンテナーに結合します。多くの場合、オブジェクトの作成に必要な依存関係を手動で構築することは困難です。オブジェクトのライフサイクルは、IoCフレームワークによって頻繁に管理されます。ほとんどのクラスがシングルトンとして登録されているプロジェクトを見てきました。明示的な制御が得られず、内部の管理も強制されます(上記の点に関連し、すべてのクラスはパブリックであり、それらを注入する必要があります)。 たとえば、.Netフレームワークには多くの静的メソッドがあります。DateTime.UtcNowなど。多くの場合、これが構築パラメーターとしてラップおよびインジェクトされるのを見てきました。 具体的な実装によっては、コードのテストが難しくなります。依存関係を挿入すると、コードが使いにくくなります-特にクラスに多くのパラメーターがある場合。 テスト可能なインターフェイスと使いやすいインターフェイスの両方を提供するにはどうすればよいですか?ベストプラクティスは何ですか?

8
成熟したアジャイルチームには管理が必要ですか?
スクラムに関する最近の白熱した議論の後、私の問題は、管理が完全にアジャイルなチームで非常に不必要で冗長な活動であると考えることであることに気付きました。成熟したアジャイルチームは、管理や非技術的な意思決定プロセスを一切必要としません。私の(明らかに間違い)目には、成熟した開発チームを管理するのに適した能力があるのはコーチ(適切なコミュニケーションスキルを持つ最も技術的に有能な同僚)だけであることは明らかです。スクラムマスターがこのようなチームにどのように貢献できるか想像できません。 私は、スクラムとそのようなベテラン開発者ではないが、チームにコーチがいる場合の生産サイクルの計画に長けているマネージャーの価値を理解し理解するのに非常に苦労しています。それは一体何の意味ですか?開発の最先端スキルを持たない人が高度な技術チームを管理するにはどうすればよいのでしょうか?おそらくここでの管理は何か他のものを意味するのでしょうか? 管理は時間の無駄であり、未熟さの副産物だと考えています。私の理解では、成熟したチームは完全に自己管理しています。どうやら私は多くの偉大な人々が反対を言うので間違っていますが、私は自分を納得させることができません。

6
特定のケースの解決よりも一般化されたソリューションを好む場合
プログラミングでは、考えられる各ユースケースを個別にカバーするか、一般的な問題を解決するという選択肢に直面することがよくあります。 差し迫った問題を解決する方が速いことは明らかですが、一般化されたソリューションを作成すると、将来の時間を節約できます。 有限のケースのリストをカバーしてカバーするのが最善であるか、またはすべての可能性をカバーする汎用システムを作成するのが最善であるかをどのようにして知ることができますか?

7
インタビュー中に技術的な質問を返す(インタビュー対象者として)[終了]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 インタビュアーに既に技術的な質問をしている人がいるかどうかを知りたいです。「まあ、あなたはたくさんの技術的な質問をしてくれたのですが、今度はいくつか質問してもいいですか?あなたの会社に参加するつもりなら、私たちは密接に協力します。彼らは私の同僚を尊重するような私の同僚のスキル...」。 ar慢に聞こえませんか?私はあなたの意見や経験を持っていることに興味があります(もちろん、インタビューを受けた人やインタビュアーとして)。 PS:私を知っている人が私がインタビューを準備していることを知っていることを望んでいないので、使い捨てのアカウント。
18 interview 

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