ソフトウェア工学

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

5
Pythonを学習するJava開発者:頭を包むためにどのような概念が必要ですか?
背景:いくつかのチュートリアルを実行し、いくつかの小さなプロジェクトを作成しました。GoogleとStackOverflowを使用して、すべてが十分に機能しています。 過去数日間に何度か、「何が足りないの?」と思った。-Pythonで書いているので、まだJavaで考えているように感じます。 StackOverflowでのこの質問には、Pythonを学習するために読むべきリソースに関するヒントがたくさんありますが、私はまだPythonに翻訳するための辞書(しゃれなし)を持つJava開発者だと感じています。 私が本当にやりたいことは、私のJavaスキルを失うことなく、Pythonに変装したJavaの代わりにPythonic Pythonを書くことができるように頭をリファクタリングすることです。 だから、私の質問の核心は、Java開発者がPythonicを考えることを学ぶために本当に必要な概念は何ですか?これには、未学習の必要があるものすべてが含まれます。 注:言語の構文についてではなく、言語の概念について質問しています。

6
フレームワークを使用しない場合[終了]
今日、ほぼすべての言語に対応するフレームワークを見つけることができ、ほぼすべてのプロジェクトに適合します。最新のフレームワークのほとんどは(一般的に言えば)かなり堅牢であり、1時間ごとのテスト、ピアレビューされたコード、優れた拡張性を備えています。 ただし、コミュニティとしてのプログラマーが選択したフレームワークに依存するようになり、基盤となる動作を理解できなくなったり、新しいプログラマーの場合は基盤となる動作を決して学んだりしないという点で、フレームワークにはマイナス面があると思いますで始まる。「PHPプログラマー」ではなく、「Drupalプログラマー」であるという程度まで専門化するのは簡単です。 誰が気にしますか?フレームワークがあります!「手作業で行う」方法を知る必要はありません!右? この基本的なスキルの喪失の結果(フレームワークを使用しないプログラマーが「時代遅れ」と見なされる程度まで)は、必要または適切でないフレームワークを使用するのが一般的な慣行になることです。特徴フレームワークの促進が基本言語でできることと混同し羽目になる。開発者はフレームワークを使用して最も基本的なタスクを達成するため、かつては初歩的なプロセスと見なされていたものに、独自の癖、バグ、依存関係を持つ大きなライブラリが含まれるようになりました。かつて20行で達成されていたことが、20,000行のフレームワークを含め、フレームワークを使用するために20行を書くことで達成されました。 逆に、車輪の再発明は望まないでしょう。基本的な一般的な小さなタスクを達成するためのコードを書いている場合、フレームワークXYZが私が望んでいるすべての機能を提供していることを知っていると、時間を無駄にしているように感じるかもしれません。「もっともっと」の部分はまだ心配していますが、多くの人がもうそれを検討しているようにも思えません。 フレームワークを使用するのが適切かどうかを判断するには、適切なメトリックが必要です。しきい値は何だと考えますか、フレームワークをいつ使用するか、または使用しないかをどのように決定しますか。
38 frameworks 


17
ソフトウェア設計:迅速に構築するか、適切に構築しますか?
自明ではないアプリケーションを構築するとき、物事を迅速に機能させ、モデルロジックをビューと混合し、カプセル化を破るなどのコードのショートカットを取ることに集中するのが最善ですか?または、より多くのアーキテクチャを構築するために事前に時間をかけて、適切に構築する方が良いのですが、デザインが非常に流動的であり、フィードバックが原因でそれを捨てなければならない可能性があるため、この余分なコードはすべて使用されないリスクがあります別の方向に進むには? コンテキストのために、デスクトップアプリケーションを構築しています。私は唯一の開発者であり、アルバイトをしているのでこのパートタイムで働いています。今、仕事のために、私は物事を正しい方法で行おうとしています。しかし、このプロジェクトは、人々からフィードバックを得ると変化すると予想されますが、それが正しいアプローチであるかどうかはわかりません。今週は数時間かけて、モデルの変更をビューに伝えるために、教科書のModel View Controllerの設計を導入しました。これは一般的に素晴らしいことですが、データを表示するために複数のビューが必要かどうかはわかりません。また、追加のアーキテクチャなしで物事をより迅速に表示できたことを知っています。プロジェクトに1週間に10〜15時間を費やすことになるので、優れたソフトウェアプラクティスに従えばデモできる何かを構築するには時間がかかると感じています。私はユーザーが ' 私がMVCを内部で使用していることに気をつけてください。彼らは問題を解決する何かが欲しいだけです。しかし、ショートカットの技術的負債が非常に大きいため、コードを維持したり、新しい機能を追加したりするのが非常に困難な状況にもあります。他の人がどのようにこの種の問題に取り組んでいるか聞いてみたいです。

17
休暇中の「緊急連絡先」のリクエストにはどのように対応しますか?
私は休暇に行きたいと思っており、仕事についてはまったく考えていませんが、緊急事態(サーバーがダウンしたり、Webサービスが機能しなくなった場合など)が発生した場合に連絡先を教えてほしいと考えています。私はそれが悪用されるのではないかと心配しています(例えば、すべてを試す前に連絡を取ります)が、休暇中であれば、たとえ停電があったとしても気にするべきではないと思います。誰でもこのような状況を経験していますか?巧妙なアプローチとは何ですか?創造的な解決策はありますか?
38 support 

19
過剰使用または悪用されたプログラミング手法[終了]
プログラミングで、過度に使用されている(IEが本来あるべきものよりも過度に使用されている)、または悪用されている、またはすべてに少し使用されているが、人々が試みる多くの問題に対する本当に良い解決策ではないテクニックがありますか?それで解決します。 正規表現、ある種のデザインパターン、アルゴリズムなど、まったく異なるものを使用できます。たぶん、人々は多重継承などを乱用すると思います。
38 design 

9
面接後に拒否された後に理由を尋ねることは適切ですか?[閉まっている]
私はインタビューで大丈夫だと思ったが、どうやらインタビュアーはそうは思わなかった。拒否メールを受け取った後に理由を尋ねるのは適切ですか?結局、人事担当者を困らせたくありません。 私は学生なので、これまでの就職活動の経験はあまりありません。この質問が馬鹿げているように思われる場合は、ご容赦ください。
38 interview 

10
アルゴリズムとデータ構造を学習するにはどうすればよいですか?[閉まっている]
これは、アルゴリズムとデータ構造を学習する必要があるかどうかを尋ねた前回の質問の続きです。はい、そうです。 今、私は、実験によって、または実際に、またはどんな課題においても、それを学ぶ機会を得られない環境で働いています。適切な本、適切な問題、アルゴリズムやデータ構造を学習するために6か月、1、2年に渡る適切なリソースなど、適切なアプローチとは何ですか?また、問題をデータ構造とアルゴリズムに関連付けることができるように私の心を形成します。

13
あなた自身のウェブサイトを持つことは重要ですか?[閉まっている]
それはどれほど必要または重要ですか?フォローしているブログやサイトのリストを維持しようとしていますが、多くの場合、誰かのプロファイルを取得して、そこに何もないことに気付きます。それは本当に重要ですか? C / C ++システムプログラマからRails、さらにはHaskellやJに至るまで、さまざまなレベルのプログラミングがあり、誰もがWebベースのアプリケーションで簡単に作業できる言語で作業しているわけではないことを理解しています。すべてがウェブ中心であるとは限りませんが、多くの人気のある無料のサービスの出現により、大多数のプログラマーが個人サイトを持つことを期待するのは無理だとは思いません。

26
言語デザイナーに何に注意してもらいたいですか?[閉まっている]
この質問の目的は、それなしでは生きていけない、または選択したメイン言語で望んでいたプログラミング言語機能のランドリーリストを組み立てることではありません。この質問の目的は、ほとんどの言語設計者が考えていないかもしれない言語設計の隅を明らかにすることです。したがって、言語機能Xについて考える代わりに、もう少し哲学的に考えてください。 私の偏見の1つであり、おそらく議論の余地があるかもしれませんが、エンジニアリングのより柔らかい側面(理由と理由)が、より具体的な側面よりも何倍も重要であるということです。たとえば、Rubyは、開発者の幸福を改善するという目標を掲げて設計されました。それが実現したかどうかについてあなたの意見はまちまちかもしれませんが、目標であったという事実は、言語設計の選択のいくつかがその哲学によって影響を受けたことを意味します。 投稿しないでください: 構文フレーム戦争。それに直面しましょう、私たちには好みがあり、言語設計に関係する構文が重要です。私は、emacs vs. VI(最近では多くの人が何も知らない)の性質の壮大な戦いを避けたいだけです。 「機能Xを持たない言語は存在するに値しない」とコメントを入力します。すべてのプログラミング言語が存在する理由は、少なくとも1つあります。良いか悪いかです。 してください行うポスト: 言語デザイナーが見逃していると思われる哲学的アイデア。 実装頻度が低いと思われる技術的概念。それが引き起こす痛みの例を提供してください、そしてあなたがそれが機能するのを好む方法のアイデアがあれば。 希望するものはプラットフォームの共通ライブラリにありましたが、めったにありません。同じトークンがありますが、通常は共通ライブラリにあるものはそうではありません。 すべてのプログラミング言語が適切に実装され、適切に定義されることを望む、組み込みのテスト/アサーション/契約/エラー処理サポートなどの概念的な機能。 私の希望は、これが楽しく刺激的なトピックになることです。 編集: Syntax Flame Warsの意味を明確にしました。特に構文はプログラム言語設計の基本的な部分であるため、構文のすべての議論を避けようとはしていません。

20
タッチ入力する能力はどれほど重要ですか?[閉まっている]
すでにプログラマーとして働いていたときに、タッチタイプを覚えましたか?もしそうなら、それは生産性にどのように影響しましたか?または、あなたはまだタイプに触れることができず、それがあなたを阻むと思いますか? スティーブイェッジによると、それは不可欠であり、 個人的には、実際に入力する作業時間の25%未満しか費やしていなかったために、大きな違いに気付きませんでした(当時私は大規模なレガシープロジェクトに取り組んでおり、既存のコードの読み取りとデバッグにより多くの時間を費やしていました)。

24
抽象化とは何ですか?[閉まっている]
プログラマーが使用するような、プログラミングの抽象化とは何かについて一般的に合意された定義はありますか?[注意、プログラミングの抽象化は、「抽象化」という単語の辞書定義と混同しないでください。]明確な、または数学的な定義さえありますか?抽象化の明確な例は何ですか?

28
インタビューで聞かれた中で最悪の質問は何ですか?[閉まっている]
プログラミングやソフトウェア開発に関連する必要はありませんが、インタビューの中でIT関連の仕事を尋ねられただけです。 いくつかの「左のフィールド」の質問は、候補者が予想外の斬新な状況にどのように対処するかを確認することを意図していることを知っていますが、ここでは、あなたが面接している仕事とはまったく関係のない質問を探しています「その質問への私の回答からどのような有用な情報を得ることができるでしょうか?」
38 interview 

9
有益なコメントとコメントアウトされたコードを区別する方法はありますか?
プログラミングの過程を通じて、コードを説明するコメントと、コードを削除するコメントがいくつかあります。 // A concise description const a = Boolean(obj); //b = false; どちらをすばやく解析する良い方法はありますか? 私は3使って周りにプレイした/のをと/** */説明コメントのために。 また、VSCodeプラグインを使用して強調表示し//TODO:、//FIXME:

2
依存性注入はいくらですか?
私は、クラスの依存関係である文字通りすべてに(Spring)Dependency Injectionを使用するプロジェクトで働いています。Spring構成ファイルが約4000行に拡大した時点です。少し前、ボブおじさんの講演の1つをYouTubeで見ました(残念ながら、リンクが見つかりませんでした)。配布されます。 このアプローチの利点は、DIフレームワークをアプリケーションの大部分から切り離すことです。また、工場には以前の構成に含まれていたものがより多く含まれるため、Spring構成がよりクリーンになります。それどころか、これにより、多くのファクトリクラス間で作成ロジックが広がり、テストがより難しくなる可能性があります。 ですから、私の質問は、あなたが他のアプローチで見ている他の長所と短所です。ベストプラクティスはありますか?ご回答ありがとうございます!

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