ソフトウェア工学

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

8
フロントエンドが最初かバックエンドが最初です。良いシステム設計の実践である2つのうち?
現在、私はクライアントに学校入学システムの開発を要求しています。今、これはこの種の挑戦をしている私にとって初めてです。私が作成した過去のソフトウェアのほとんどはそれほど複雑ではありません。 私はあなたのほとんどすべてが複雑なソフトウェアを作成したことを知っています。これについてあなたのアドバイスが欲しいです。最初にフロントエンドまたはバックエンドを設計する必要がありますか? ありがとう! ここに、私が少し前にインターネットで見つけた記事の結論があります。共有したいだけ http://www.skitoy.com/p/front-end-vs-back-end-developers-my-take/157 フロントエンド開発者とバックエンド開発者(私の意見) 私の個人的なテイク 繰り返しますが、それは訓練の問題であり、いくつかの広範なストロークの一般化です: フロントエンド開発者 通常、CS学位を取得していないか、3級学校のCS学位を取得していません。 基本に似た言語で作業する(PHP is Basicを参照) フォトショップドキュメントをCSS / HTML /などに変換する視覚的なスキルを持っている。 型のない言語のため、反復プログラミングに対して高い許容度を持っている バックエンド開発者 CSの学位または豊富な経験がある 問題解決のアプローチをより体系的にする 漏れているオブジェクトを見つけるのに何日も費やすことを気にしないでください 問題を解決するためのツールを試してビルドする

16
プログラミングインタビューのためにフォーマルまたはカジュアルな服装をしていますか?[閉まっている]
私が働いた4つの仕事のために、私はフォーマルな服装を2回、ビジネスカジュアルを1回、さらにカジュアルな服装を1回しました。最近のプログラミングインタビューにおいて、ドレッシングコードはどれほど重要ですか?カジュアルに来た場合、雇用主または面接官はあなたを真剣に受け止めませんか:カジュアルなウォーキングシューズ(スニーカーではない)が付いたプレーンシャツとカーキ色のズボン?
30 interview 

6
単一の.csファイル内の複数のクラス-良いか悪いか?[閉まっている]
.csファイル内に複数のクラスを作成することをお勧めしますか、それとも各.csファイルに個別のクラスが必要ですか? 例えば: public class Items { public class Animal { } public class Person { } public class Object { } } これが良いアーキテクチャの貧弱な例であるという事実を少し避けて、.csファイルに複数のクラスがあることはコード臭いですか?
30 c#  code-smell 

9
単独で、または小さなプロジェクトで作業するときに、何らかの種類のバージョン管理を使用していますか?
非常に多くの場合、私は自分だけの小さなプロジェクトに取り組んでいます。私は1台のマシンで作業していますが、最近、何らかのバージョン管理を使用することを考えました。これには、たとえば次のような利点があります。 ローカルバックアップを気にする必要はもうありません 間違いは簡単に元に戻すことができます 履歴を維持できます しかし一方で、たとえば次のような欠点もあります。 追加のリソースが必要 設定する時間、慣れる時間など あなたの経験から、一人で作業するときにリビジョン管理を使用するのは良いことですか?

5
(たとえば、bool / intの代わりに)voidを使用する必要がある場合と理由
開発者が関数にとって重要ではない何かを返すことを選択したメソッドに時々出くわします。つまり、コードを見ると、どうやら同じように機能しているように見えvoid、少し考えてから「なぜ?」これはおなじみですか? 時には、単にaを実行するのではなく、boolまたはのようなものを返す方が良い場合が多いことに同意します。しかし、全体像では、賛否両論についてはわかりません。intvoid 状況によっては、an intを返すことにより、呼び出し側はメソッドの影響を受ける行またはオブジェクトの量を知ることができます(たとえば、5つのレコードがMSSQLに保存されます)。「InsertSomething」のようなメソッドがブール値を返すtrue場合、成功した場合、そうでない場合に返すように設計されたメソッドを持つことができますfalse。発信者は、その情報に基づいて行動するかどうかを選択できます。 一方、 メソッド呼び出しのあまり明確でない目的につながる可能性がありますか?悪いコーディングはしばしばメソッドの内容を再確認せざるを得ません。何かを返す場合、メソッドは返された結果で何かをしなければならない型であることを知らせます。 もう1つの問題は、メソッドの実装が不明な場合、開発者は機能的に重要ではないものを返すことにしたのですか?もちろんコメントできます。 メソッドの閉じ括弧で処理を終了できる場合、戻り値を処理する必要があります。 ボンネットの下で何が起こりますか?falseスローされたエラーのために、呼び出されたメソッドは取得されましたか?または、評価結果のためにfalseを返しましたか? これについてのあなたの経験は何ですか?これにどのように対応しますか?

7
Windowsプログラミングの哲学はありますか?[閉まっている]
UnixとWindowsの両方の環境でプログラミングを行ってきました。私は主にUnixで働いており、そこでUnix Philosophyを学びました。 1つのことを行うプログラムを作成し、それをうまく実行します。 連携して動作するプログラムを作成します。 テキストストリームを処理するプログラムを作成します。これはユニバーサルインターフェースであるためです。 UnixとWindowsの世界では、プログラミングの文化に明らかな違いがあるようです。例えば: GUIとCLI レジストリと設定ファイル 特定のニーズに特化した多くのツールと組み合わせることができる汎用直交ツールのグループ Windowsの世界には「Unix哲学」に相当するものがありますか?Windowsからプログラミングに移行する際に、UnixプログラマーがWindowsから学習できること、または知っておくべきことは何ですか? Windowsプログラミングのベストプラクティス(およびWindowsとUnixの戦いではない)に焦点を当てた回答をお願いします。

8
自分で作業するときに生産性を維持するために何をしますか?[閉まっている]
私は、他の人には何週間も見られないコードの一部で、孤立して作業していることに気付きます。自分の生産性とやる気を維持するためのアイデアを探しています。 長期的なプログラミングタスクを与えられ、自分で(たとえば、チームメイトや同僚なしで自宅から)働いているときに、やる気と生産性を維持するために何をしますか?

17
クライアントは、ポルノのために作業機械を選別することを望んでいます。出来ますか?
長年のクライアントが、ポルノのために彼らの作業機械をスクリーニングするのを手伝うように私たちに頼みました。デリケートな素材が見つかった場合、彼らは責任を心配しています。彼らの主な関心事(明白な理由のため)は、ビデオ、オーディオ、および画像ファイルです。可能であれば、不適切なコンテンツがないかテキストベースのドキュメントをスキャンしたいと考えています。彼らは露骨に違法で始まり(詳細をリストする必要はない)、明らかに不快なものに下がっており、一部の人々にとって不快なものも含めて、非営利コンテンツの階層を持っています-ランジェリー広告、ジョークカードお尻の割れ目、ハウィーマンデルに関連するもの。 私の質問は: これは倫理的ですか?私は、すべての従業員が自分の作業機械が会社に属し、検索の対象であることに法的に同意しているからだと思います。上映は、仕事に持ち込まれたパーソナルマシンでは行われません。 実行可能ですか?私は多くの画像処理/インデックス作成を行ってきましたが、これは全く新しい複雑な世界のようです。 ポルノを発見するための成功したテクニックへの参照はありますか? 何かが発見されたときに結果をアーカイブするのは適切ですか?

6
Doctrine 2またはPropel 1.5 / 1.6を選択する必要がありますか?[閉まっている]
Doctrine 2(またはそれ以降)およびPropel 1.5(またはそれ以降)を使用したことがある人からの話を聞きたいです。これら2つのオブジェクトリレーショナルマッパーのほとんどの比較は古いバージョン(Doctrine 1とPropel 1.3 / 1.4に基づいています)に基づいており、両方のORMは最近のリビジョンで大幅に再設計されました。たとえば、Propelの批判のほとんどは「ModelName Peer」クラスにしているようです。これらのクラスはいずれの場合も1.5で廃止されます。 ここに私がこれまでに蓄積したものがあります(そして、私はこのリストをできるだけバランスの取れたものにしようとしました...): 推進 長所 PHPのマジックメソッドに依存するのではなく、実際のコードが生成されるため、IDEに非常に優しい。これは、コード補完などのIDE機能を意味しますなどのが実際に役立つます。 高速(データベースの使用に関しては、データベースでランタイムのイントロスペクションは行われません) スキーマバージョン間のクリーンな移行(少なくとも1.6ベータ) PHP 5.3モデル(名前空間)を生成できます useXxxメソッドのようなものを使用して、多くのことを単一のデータベースクエリに簡単に連結できます。(上記の「コード補完」ビデオを参照) 短所 追加のビルドステップ、つまりモデルクラスのビルドが必要です。 生成されたコードは、Propelのバージョンが変更されたり、設定が変更されたり、スキーマが変更されるたびに再構築する必要があります。これは一部には直観的ではなく、モデルに適用されたカスタムメソッドは失われます。(おもう?) -真実ではない; 生成されたクラスは基本クラスであるため、カスタムメソッドは失われません。Propelは拡張専用のエンティティクラスを提供します。 いくつかの便利な機能(バージョンの動作、スキーマの移行など)はベータ版です。 教義 長所 もっと人気 Doctrine Query Languageは、PropelのActiveRecord戦略で簡単に可能なものよりも潜在的に複雑なデータ間の関係を表現できます。 Propelと比較した場合、再利用可能な動作を追加するのが簡単です。 スキーマを構築するためのDocBlockベースのコメントは、個別のXMLファイルではなく、実際のP​​HPに埋め込まれます。 どこでもPHP 5.3名前空間を使用します 短所 まったく新しいプログラミング言語(Doctrine Query Language)を学ぶ必要があります いくつかの場所で「マジックメソッド」の観点から実装されており、IDEのオートコンプリートは価値がありません。 データベースのイントロスペクションが必要なため、デフォルトではPropelよりもわずかに遅くなります。キャッシングはこれを削除できますが、キャッシングはかなり複雑になります。 コアコードベースに含まれる動作が少なくなります。Propelが提供するいくつかの機能(ネストされたセットなど)は、拡張機能を介してのみ使用できます。 Freakin 'HUGE :) これは、両方のツールで利用可能なドキュメントを読むことによってのみ収集しましたが、実際にはまだ何も作成していません。 ただし、両方のツールを使用して、各ライブラリの長所/短所に関する経験を共有し、この時点での推奨事項を共有している人からの意見を聞きたいと思います。
30 php  orm  doctrine 

7
オープンソースプロジェクトのライセンスを選択する
私はいくつかのオープンソースプロジェクトを行ってきましたが、将来さらに多くのことをする予定です。これまで、すべてのコードをGPLでリリースしましたが、GPLは企業環境で使用するコードには制限が強すぎると主張する記事をいくつか読みました。これは、おそらく、貢献を減らします。 私が達成したかったのは次のとおりです。 以下のための完全なアプリケーション: アプリケーションのサポートを販売する以外の商用利用はできません(つまり、アプリを販売することはできませんが、周辺のすべては販売できます) 以下のためのライブラリ(コンポーネント、プラグイン、...): 変更せずに商用プロジェクトに含めることができます ライブラリ/コンポーネントの変更はオープンソースでなければなりません(貢献します)-プロジェクトの残りの部分、商用かどうかは影響を受けません アプリケーションにとって、GPLは依然として論理的な選択のようです。図書館については、ライセンスに関する私の原始的な理解から、LGPLはぴったりだと思うようになりますが、よくわかりません。私はMITライセンスを見てきましたが、それは寛容すぎるようです。 たいていの場合、改善が貢献している限り、人々に自分のコードを好きな場所で使用してもらいたいです。 これは私の質問に私を連れて来ます:LGPLはオープンソースライブラリ、コンポーネント、プラグインなどの論理的な選択ですか?より良い代替手段はありますか?GPLは私のアプリケーションにとって良い選択ですか、それとももっと良いものがありますか? 更新: 私の最終決定に興味がある人のために、マルチライセンス方式、MPL、LGPL、GPLでライブラリをリリースすることにしました。これにより、MPLの下でコードを変更しない限り、事実上すべての人が義務なくコードを使用できます。 これは、コードがFSFとプロプライエタリソフトウェアの両方で使用できることを意味しますが、「悪い」商業的悪用は防止されます(または、私は考えたいと思います)。

9
プログラミング言語には何種類ありますか?[閉まっている]
基本的に、私は多くのプログラミング言語を学び、優れたプログラマーになりたいです。私はほんの一握りの深さしか知らないので、いくつかのクラスやタイプのプログラミング言語があるかを誰かが説明できることを望んでいました。グループで学習しなければならない場合に、それらをひとまとめにする方法が好きです。 Javaのバックグラウンドから来た私は、静的な型付けに精通していますが、動的な型付けに加えて、可能な場合はカテゴリの内訳を確認したいほど利用可能な言語が多様でなければならないことを知っています。

5
独学のプログラマーとして、再び学校に通わずに学術的基盤を得るにはどうすればよいですか?[閉まっている]
私は独学のプログラマーとしてかなり良い生活を送っていますが、CSの学位を持っている仲間と低レベルの基本的なトピックについて話し合うと、知識に穴が開きます。私は全体像(建築)の男なので、長い間これは私を悩ませていませんでしたが、最近、学校に戻らずにこれらの基本を学ぶのに役立つアプローチができるかどうか疑問に思っていますか?あなたがメンタリティを必要とするときにそれを学ぶのではなく、私に基礎的な視点を与えることをお勧めできる本、ウェブサイト、またはビデオはありますか?

11
ソフトウェアの革新は、まだ主に北米とヨーロッパですか?なぜ、そしてどれくらい長く?[閉まっている]
このサイトは世界中のプログラマーに読まれているので、大部分のソフトウェアイノベーション(言語、OS、ツール、方法論、書籍など)がまだ米国、カナダ、およびEU。ロシアのNginxウェブサーバーや日本のRuby言語など、いくつかの例外を考えることができますが、私が毎日使用して遭遇するソフトウェアは北米とEUのものです。 どうして?歴史と歴史的な勢い(コンピューターはアメリカとヨーロッパで始まった)が業界を動かしていますか?そして/または、いくつかの曖昧な(または本当の)文化的違いが海外のソフトウェア革新を妨げていますか? それとも、西側の私たちは、アジア、南アメリカ、東ヨーロッパなどで起こっている本当のソフトウェア革新を単に知らないのでしょうか? 革新の中心が、いつから西洋から移動するのか。

5
職場での「20%時間」の導入[終了]
20%の時間は、それはそれの従業員は、彼らが面白いことをプロジェクトに取り組んで自分の時間の20%を費やすことができ、雇用主の文化だ-それは新しいアプリを発明、または既存のプロセスを向上することができる、などの一部の人々がありスカンクのようにこれを知っています動作しますが、その用語はあなたにとって何も意味しないかもしれません(またはまったく異なるもの)。 会社で20%/スカンクの仕事から生まれた素晴らしい製品の多くの文書化された事例があります。勝ち負けの状況のようです。会社は素晴らしい新製品やアプリケーションを獲得する可能性があり、開発者は自分の創造力を曲げて革新する機会があります。 私は以前の雇用主で働いていた20%/ Skunkを何らかの形で紹介しようと何度も試みましたが、成功しませんでした。 どうすれば経営陣にそれを正当化できますか?この種のワークアレンジメントにアプローチする「正しい」方法は何ですか?


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