No.7ベストアンサー
- 回答日時:
プログラムには性格というか、個性が出ると思います。
一説には、英語を母国語とする人は英語を書く感覚でプログラムを書くと言いますし、プログラムが著作権法に定められた著作物になるということは、単なるデータではないと考えられているということです。どこまでを個性というかは難しいですが、まず、何もコーディング規約が無いときにプログラムを書く書き方は、自分がどういうプログラムを読んできたか、どういうプログラムを書いてきたか、何を学んできたかというのが出ますね。日本のソフトウェア開発会社で面接中にプログラムを書かせるのは聞いたことが無いですが、欧米のソフトウェア開発会社で面接中にプログラムを書かせる時はそういうところも見ています。
これまで読んできたプログラムの影響を受ける最たる例はNo.1氏がおっしゃっているケースです。特に決まりがないときにどのコーディング規約に従うかというのは、これまで見たプログラムの最大公約数になっていないでしょうか。例えば、No.1氏が出していた次の例はこのコーディング規約の特に字下げのルールにまつわるものです。 (参考: http://ja.wikipedia.org/wiki/%E5%AD%97%E4%B8%8B% …
if(a=b){x++;}
あるいは
if(a = b){
x = x + 1;
}
コーディング規約は開発グループごとに全然違い、そこから生み出されたプログラムはみんなそれに従いますから、どのグループのコードを読んだかでかなり影響を受けると思います。ちなみに、コーディング規約にはこの他、変数名の付け方から、プログラミング言語の便利機能を使うか使わないか、どういう時に使っていいか (例えば、C++で例外を使うか使わないかなど) が書いてあります。 (参考までに: http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%BC% …
どういうプログラムを書いてきたかというのは、どういう人に指導してもらったかやどういう人のプログラムを参考にプログラムを書いてきたかというのももちろん大きな要因ではありますが、どのプログラミング言語をこれまで使ってきたかというのも大きな影響を与えます。例えば、慣れ親しんだライブラリーの使い方の癖から、関数の出力をどうやって出すかというのの癖が出ます。返り値、最初の引数に参照渡し、最後の引数に参照渡しの3種類がざっと考えられます。また、BASIC出身の人はやたらとgoto文を使ったり、大域変数を使ったり、sleepをloopでやったりという癖が出ます。手続き型言語出身だと関数型言語にを使っていても代入をしようとがんばります。
何を学んできたかというのでは、例えば、カプセル化を理解している人と、理解していない人ではプログラムの書き方が全然違います。それがわかっている人だと、一部を変更してもその影響が一部に留まるようにプログラムが書けますが、そこの所がわかっていないと一つのファイルの変更がプログラムの多くに影響をあたえるような実装になります。構造化プログラミングやオブジェクト指向プログラミングの知識はそのカプセル化をする時の大きな手助けになります。
他の人もおっしゃっているように、コーディング規約に則っていて、何をやっているのか思想が理解しやすく、不具合が混入したら発見しやすく、そもそも不具合を混入しにくく、冗長でないなら、バリバリ個性があっても問題ないと思います。レビューをすると、その個性の部分がかみ合わなくて無駄な対立をすることもありますが、その場合はその人のコードなわけですから、極力書いた人のやり方を尊重したほうが良いですしね。
ちなみに、もし、サンプルコードっぽく書いて性格が出るとしたら、サンプルコードの性格をあなたの性格だと思われているのか、それとも、変数名の付け方が変わっているかくらいしか思いつきません。
No.3
- 回答日時:
自分もSEで飯を食べてきましたので、その経験からお答えします。
プログラムのコーディングを行う場合、ある程度の性格が必ず出ます。
それは、プログラムを組む時に、どのような手順で組み立てていくのか、その考え方によって左右されるからです。
簡単な例で言うと、全体を考えてから細分化して組み上げるのか、もしくはコアな部分を消化しつつ全体をまとめて行くのかの違いなどがあります。
プログラマーとして失格かどうかですので、性格が出ること自体は問題ではありません。
問題なのは、バグが出にくいコードを書けるかです。
自分で作ったものが自分で直せない人が随分います。これではプログラマーとして失格です。
それには、メンテがしやすいものを書くように心がけること。
つまり、誰がコードを読んでも解り易いものにする。
プログラマーとしては凝ったものを作りたくなりますが、仕事では複雑なものよりも単純明快のものの方が重宝されます。
関数や変数なども、使用用途を明記したコメントを入れるように心掛けるのも忘れずに。
あとは出来る限り上から順に読んでいって理解できるように、トップダウンのコードを書くようにするといいと思います。
最後は1度失敗したことを繰り返し失敗しないのがプロです。
自分にとって良く起こすバグが何度も組んでいると解ってきます。それを繰り返さないように対策をするのが大事なことです。
最初はだれでも素人です。問題はこれからどれだけプロ意識が持てるかだと思います。頑張ってください。
No.1
- 回答日時:
>>文章と同じでコードにも性格が出るのでしょうか?
まぁ、多少は。
コメントきっちり書くタイプの人もいれば、
ある程度分かればいいや。という事で簡略的に書く人。
一切書かないアホもいますが。。。
他にも、「ともかくできりゃいいんだろ」と言わんばかりにif文使いまくったりするような奴とか
何でここで同じ処理かましてんねん?と思うような処理コードを連続で入れてるような場合とか。。。
長くなればなるほど、なんとなーく差が分かります。
改行場所はきっちり決めてあるのか、とか、ただ長くなったからテキトーに改行すりゃいいやと思う奴とか。。。
if(a=b){x++;}
↑んな感じに、「ともかく短くコンパクト収めたい奴」
とかもいるし、逆に自分は
if(a = b){
x = x + 1;
}
↑とかな感じに、ともかくステップごとに並べたかったり。とか。
まぁ、だからといって、そのプログラム見て「いろんな性格の奴いるな~」程度以上は思うこともありませんけどね。
きっちりしてる性格の奴のプログラム触ったら、それに合わせればいいだけなので、逆に楽ですし。うん。
>>また、性格が出てしまうのはプログラマーとして失格でしょうか?
あなたに一言。
「所詮プログラマー」です。
正直、今の世の中、プログラム打つだけじゃ食っていけません。
勉強すると分かるとは思いますが、それを管理する人やら企画する人の方がよっぽど重要です。
プログラムなんて、「企画(設計)されたとおりに動けばいい」ものですし。
そう考えると、コメント文があろうが無かろうが、短かろうが長かろうが、どんな無駄な処理やってようが、
企画(設計)どおりにプログラムが出来ていれば問題ないです。
ただ、「じゃあ、テキトーにやるわ」とした場合、大体はのびませんけどね。(実力が。
自分ひとりがそのプログラムを触るわけでもない場合は多いので、「他人のために、分かりやすく、きっちりしたプログラムを書く」
必要はありますが、もちろん、自分が再度見る可能性も当然あるわけで。
「他人のためでなく自分のためにも分かりやすくきっちりしたものを作る」方が自分のためになります。
。。。まぁ、3年もやってみれば、なんとなーく意味が分かると思いますよ。
>>そのコードを見て「性格出るねーw」と言われました。
後は、「性格が出たところで何ら問題ない」という事を考慮すると
「とりあえず、先輩風吹かせたくて言うだけ言ってみた」って事もありますかね(笑
まぁ、「性格」というよりは、みんなやりやすい方法違うんだから、ソースの書き方に違いがあって面白いよね~。
程度の捉え方でいいと思いますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Visual Basic(VBA) VBAで質問があります 1 2022/10/19 10:32
- IT・エンジニアリング プログラマーの仕事量について 3 2023/01/04 23:25
- その他(プログラミング・Web制作) python コードについて(初学者です) 3 2023/07/20 14:44
- ヒーター・こたつ・ホットカーペット こたつコードの交換について教えてください。こたつコードが故障したのでコードだけ買い替えたいのですが電 5 2022/12/16 12:47
- CGI サイト訪問者の情報を取得したい 1 2023/02/21 11:03
- JavaScript プルダウンから1個選んで、豆知識を出すプログラム。 2 2022/06/21 17:27
- PHP カラーミーショップのSmartyでの文字列抜き出し 2 2022/05/06 11:51
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- Visual Basic(VBA) PowerPoint VBA で画像の鮮明度を変更する方法がわかりません 2 2023/03/24 13:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAにてTIFFから画像を取込みた...
-
Webプログラムってネイティブア...
-
verilogによる複数のクロックの...
-
2値化した画像の黒い部分のピク...
-
OpenCvsharpについて。
-
VBA
-
VB6 画面サイズ変更について
-
初級者の質問――time_tについて
-
四択のクイズを作っているので...
-
C言語でのソケット通信のclose
-
signalハンドラに引数を渡したい
-
processingで雪が積もるような...
-
COBOLのS9タイプからXタイプへ...
-
Visual Basic 2010で方形波(矩...
-
プログラミングの問題と解答例...
-
無限ループ中にある任意のキー...
-
fscanf(),scanf()とBuffer Over...
-
右クリックから起動するソフト...
-
C++ Builder6 をふたたび動か...
-
指定したフォルダーを最前面表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Webプログラムってネイティブア...
-
vba listviewにおけるtextのAli...
-
初級者の質問――time_tについて
-
VBA
-
COBOLのS9タイプからXタイプへ...
-
指定したフォルダーを最前面表...
-
マイコンからプログラムを読み...
-
2値化した画像の黒い部分のピク...
-
プロダクションコードとは?
-
Arduino nano(アルドゥイーノ ...
-
URLの最初の「h」を略す
-
VBコンソールアプリ(.NET Frame...
-
XPathの関数「text()="value"」...
-
世界一美しいソースコード
-
Excel VBA で、データベースフ...
-
三次元のグラフを書きたいので...
-
Visual Studio .NET C# でDLLを...
-
SH2を使いたいです
-
壁紙の変更
-
gccでスタックオーバーフローの...
おすすめ情報