1read 100read
2013年03月プログラム349: 初心者の作ったプログラムにありがちなこと (247) TOP カテ一覧 スレ一覧 2ch元 削除依頼
【肥大化】C++ を見捨てたヤシ 2人目【複雑化】 (926)
COBOL vs Java 2戦目 (956)
関数型プログラミング言語Haskell Part21 (744)
HTABOXコア Part3 (593)
訃報: C 言語の開発者、デニス・リッチー氏が死去 (576)
C/C++の宿題片付けます 163代目 (631)

初心者の作ったプログラムにありがちなこと


1 :2008/03/08 〜 最終レス :2012/11/08
ありそうでなかったスレ

2 :
sudo kill >>1

3 :
せめてマ板に立てればいいものを...

4 :
まじれすすると
「動かない」

5 :
ポインタ変数を宣言しただけで、そこにメモリの平原が広がっていると妄想する。

6 :
変数の型が何バイトかわかっていない。

7 :
タブインデックスが設定されてないとか、ウインドウは可変になってるのにコントロールの配置は固定になってるとか、
OK、キャンセル系のボタンでフォームを閉じる時には後始末の処理をやってるけど、×を押されると対応してないとか。

8 :
メニューバーがなく、OKボタンで終了する。

9 :
C#なのにクラスがない

10 :
publicだらけ

11 :
コピペ

12 :
staticなメソッドしかない

13 :
インデントがタブ/スペース混在。

14 :
そこそこの規模があるのにすべて一つのクラス

15 :
メモリが溢れる
>>10
なんという俺のプログラム

16 :
意味もなく個性を追求

17 :
main関数内でなんでも終わらせようとする
(慣れると、むしろそのほうが難しいよね・・・)

18 :
フラグ用グローバル変数の山

19 :
メソッドに「○○する関数」というコメントがついてる

20 :
>>19
それは別にいいんじゃね?

21 :
インラインアセンブラを使うが逆効果

22 :
>>20
functionでないものを関数と呼ぶ理由はないと思われ
普通に「○○するサブルーチン」でいいじゃん

23 :
コードを手直ししてもコメントはそのまま。

24 :
>>22
下の様に書く言語もあるから,メソッドもプロパティも関数でいいんじゃね?w
class MyClass {
    function MyMethod() {
    }
    function get MyProperty() {
    }
    function set MyProperty() {
    }
}

25 :
メソッドというと脳がショートする同僚がいるので、
例えどのようなものでも関数と呼ぶようにする。
クラスは最近慣れたらしいが構造体とか列挙子がと言ったほうが通じる。

26 :
動きや使いどころが違うものに似た記述方法を用いると、
分かりやすい部分もあるが、分かりにくい部分もあるな


27 :
C++はメソッドをメンバ関数というな
オブジェクト指向性が中途半端なのが原因だが

28 :
コメントがない

29 :
えーむしろ初心者の方がコメントを打つような気が。
ただしコメントの内容がわかりづらいけど。
#もし戻り値がfalseだったらエラーにする
if not foo(baz) :
  print "エラーです"
  sys.exit(1)
いや、それは見たら分かるから、どういうチェックさせている端的に書けと。

30 :
簡単な処理をわざわざ難しく書く。

31 :
自分が書いたコードでも数日経つと読めない

32 :
int* null_ptr = NULL;
*null_ptr = 50;

33 :
ポインタだとわからなくなるので
全部配列にする。

34 :
初心者に毛が生えると>>22のようにどうでもいいことにこだわりだしますw

35 :
俺が初めて作ったシューティングゲームは1ファイル15000行

36 :
起動しようとすると「〜.dll(デバッグ用ライブラリやダイナミックリンク用メモリマネージャなど)が見つかりません」と出る。

37 :
>>33
逆に、高速化を狙いポインタを使ってわけのわからないことをする

38 :
ファイル名がうんこ

39 :
細かく分けすぎ&雑な名前付けのせいで、何をする関数か当人でも即答できなくなる

40 :
>>37
その挙句に、却って遅い罠。

41 :
>>36
しかもそのdllがない客先でそれを起こす。

42 :
変数名をworkとかa,b,num等の名前から内容を推測できないものにし、しばらくしてから書いた本人も読めなくなる。
・・・というのは誰でも初めはやるわな。
むしろ早い段階でやっておいて、後悔したほうが勉強になっていい。

あと、インクリメント演算、デクリメント演算を使わない、for文を使わないなどもあるね。
最初はそれもいいと思うけど、とりあえず書けるようになってきたら、
頑張って使う努力をしないと何時になっても使えない気がする。

43 :
>>38
俺は今でも使うぞ

44 :
cntとか下品な言葉を使いまくりのやつとか。

45 :
それ、カントのことじゃないよ?

46 :
>>44
警察のどこが下品なの?

47 :
>>44
関東と近畿

48 :
巨大なクラスと巨大なメンバ関数が
ほとんどを占めていて大丈夫か?
と思うが、意外と何でもできる。
こいつ天才か?と、
でも
次の瞬間シヌ。

49 :
if の連続で、よくみたら
最初のif が閉じたのが数ページ後

50 :
確かにありそうでなかったw
これ、何故動かないのか悩みに悩んだソース。
10 A="PRINT"
20 A "HELLO"
run
Syntax Error in 20

ほんとのほんとに初心者だったからなぁ。

51 :
>>50
プログラマの素質がありません

52 :
ド・モルガンの法則を知らない

53 :
うちの会社のソースが、殆ど当てはまるなぁ
>>49とか
おわっとる

54 :
>>52
それ自体は知らなくてもしばらくやってたら自分で発見するだろ、普通
と思ってた時期が俺にもありました・・・・

55 :
集合論は数学Aの修学過程に包含されて高校1年後期〜2年前期で習うわけだが…。

56 :
ワード単位でごっそりMOVするくせにTSTやTSTNでせこくビット展開した挙げ句、
XFERやXFRBを駆使して点在した値を再度ワードアドレスに転送したりする。
よく分からなくなったら立ち上がり微分のb接点で自己保持を切ったり、強引にRSTかましたりする。

57 :
>>56
電気屋乙

58 :
not (2 < a and a < 8)
のとき
2 >= a or a >= 8
と同値ってすぐ判るよな?

59 :
多くの言語では違うと思う

60 :
それはないw

61 :
>>58
お前がすぐ判らないのは判った

62 :
演算子の優先順位に依存します

63 :
>>59-62はおいといて、
2 >= a or a >= 8
ではなく
a <= 2 or 8 <= a
って書いてほしいんだけど!!!!

64 :
C風にいうと範囲を表現するときは
2 < Val && Val < 10          2 < Val AND Val < 10
とかの表記のほうが
2 < Val < 10     という意味を視覚的に表現できてると思う
だから   if ( ! (2 < X && X < 10)     IF ( NOT (2 < Val AND Val < 10)
とか冗長な書き方するのは別にいいと思う
「視認性の為の冗長さをかっこわるいと思う」ってのも初心者にありがちじゃないかい

65 :
初心者に毛が生えると>>58のように凡ミスをします

66 :
>>64
それはandの場合ならね

67 :
>>64
無駄をかっこわるいと思うのは初心者じゃなく中級者じゃね

68 :
>>62
カッコつければいいだけじゃないかっ
優先順位的に必要なくてもカッコつけたほうが処理の括りとしてわかりやすい場合もあるしね

69 :
LD CF113
ANDNOT 0.00
@MOV #0 D0
LD =< #2 D0
AND =< D0 #8
OUT 0.01
++B D0
LD < D0 #9
OUT 0.00 END
―動作説明―
・毎スキャンに渡りブールデバイス0.00がOFFの時、ワードデバイスD0に1スキャンのみ#0を転送する。
・毎スキャンに渡りD0が&2〜8である時、ブールデバイス0.01をONする。
・毎スキャンに渡りワードデバイスD0をインクリメントする。
・毎スキャンに渡りワードデバイスD0が&9より大きい時、ブールデバイス0.00をONする。
・I/Oリフレッシュを行う。

70 :
>>50
イキロ

71 :
最近の言語では
a = print
a("hello")
が普通に動いたりするし、ある意味時代を先取りじゃね?w

72 :
>>71
#include <stdio.h>
main(){
int (*a)(char*, ...);
a=printf;
a("hello");
}

73 :
C++0xだとさらに
auto a = printf;
a("hello¥n");

74 :
Java でクラス一つ、メソッド多数、main() の中で手続き型構造化プログラミング。

75 :
>>73
お前いい事言うな。
出来るか?
なら今すぐやれ。

76 :
gccならできるだろ

77 :
>>73
それって型推論でもやってるの?
auto pi = 3.14;
とかもあり?
autoってauto intの略だったような記憶が。

78 :
>>77
型推論用にautoキーワードができた。
その例だと、環境にもよるけどpiはdoubleになる。

79 :
サンクス
そりゃ便利だな。g++にはfinallyもあるし結構ツボな拡張が多いよね。
gccはほとんど使ったことないんだけどw

80 :
>>72
#define a printf
main () {
a( "hello" );
}
こっちのが近い感じかも。
ちなみに当時小学1年か2年。子供の発想力って凄いわ。

81 :
>>79
g++というか時期C++がそうなる予定。
g++がTechnical Reportの一部をお試し実装しているということ。

82 :
C++0xでググれ

83 :
でもfinallyは現状でもかなりの処理系で実装されてるよね

84 :
ちなみにfinallyは時期C++でも非標準だからね。

85 :
init();
try{

}finally{
 done();
}
って距離が遠すぎるんだよな。
begin{
 init();
} end {
 done();
} main {

}
にしてくれ。

86 :
距離が遠すぎると感じるくらい詰め込みすぎのプログラムは初心者にありがちですね

87 :
ボトムズに乗れば勝機はある

88 :
わざわざスペース入れるの面倒臭い
詰め詰めで書いて後で整形ツールで一括整形するわ
というか構文木で保存しておいて編集するときは整形ルールを適用して表示するようにすりゃいいのだ
XMLとスキーマみたいにさ

89 :
>>88
>構文木で保存しておいて
最初からLispで書けよ

90 :
VB
foo.bar.baz.hoge.fuga1.Text = 値
foo.bar.baz.hoge.fuga2.Text = 値

foo.bar.baz.hoge.fuga22.Text = 値
foo.bar.baz.hoge.fuga23.Text = 値

91 :
>>90
Delphi だと
with foo.bar.baz.hoge do begin
 fuga1.Text = XXX;
 fuga2.Text = XXX;
 ...
 fuga23.Text = XXX;
end;
だな なつかしい

92 :
>91
いや、VBにもほぼ同じ機能の With があるんだよ
なのに >90 みたいなコード書く人が居るからスレタイ通りなワケで…

93 :
まぁ、withを使うのは下策だとする書籍もあるがな。曰く、検索したときにヒットしにくいとか。
あれは誰の書いた本だったか。物書きとしては兎も角、技術者としては初心者レベルだったのだろう。

94 :
どっちかっつーとwith云々よりも
fuga1〜fuga23を一々書いてる辺りが問題じゃね?
配列的な何かが使えないのか

95 :
配列を使わないでText1、Text2…
って変数作っちゃったことはあるな。そう言えば。

96 :
MFC使ってるとブトゥンウィンドウひとつごとに
CButton button1;
CButton button2;
CButton button3;
ってデータメンバ作っちゃうことなんて普通。プチスール。

97 :
>>96
クラスウィザードないと何にもできない奴とか、いるからなー。
オブジェクトがいくつあろうと配列にしてないから、
メッセージマップもひとつづつ指定しやがる。

98 :
VB6とかなら

dim a as variant
a = "123"
dim i as long
i = a
こんな感じの暗黙キャストしまくりとかあったな…

99 :
こんな酷いの専門の時よく見たなぁ
void func(int flg,int flg2)
{
if(grbFlg == OK)
if(flg == 1)
{
if(flg2 == 1)
{
処理1
} else{
処理2
}
}else if(flg == 2)
if(flg2 == 1)
{
処理1
}else{
エラー処理
}
}
}
printf("%d %d %d",grbFlg,flg1,flg2);
}

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
Androidプログラミング質問スレ Part30 (214)
初心者の俺が初めて覚えるプログラム言語 (472)
SDL=Simple DirectMedia Layerでゲームだ (533)
BrainFuck Part.3 <[+-.,]> (491)
C++でXML(主にxerces)やろう! (675)
pythonがこの先生きのこるには (747)
--log9.info------------------
豊田道倫とパラダイス・ガラージ X (600)
ライブに行ったらガッカリしたバンド 2 (475)
【オサレな街】3rd.StageスレS【本八幡】 (782)
EVERYTHING MUST PASS 1 (491)
Qomolangma Tomato 5 (754)
嘘つきバービー よっつめ (815)
【暇なだけだね】ポラリス Polaris 8【あのミニラ】 (922)
ライブハウスのPAだがなんか質問あるか? (553)
【BONESCRATCH】札幌HC周辺【discotortion】 (608)
例のK part.2 (205)
RIDDLE (594)
Luminous Orange/ルミナスオレンジ Part2 (788)
マキシマムザホルモンの曲の歌詞を書き殴るスレ3 (476)
ザ・ジェッジジョンソン-THE JETZEJOHNSON(07 MIX) (800)
【こうじ脱退】マスミサイル4発目 (563)
【Buy Now】PANICSMILE vol.5【A GIRL SUPER NOVA】 (424)
--log55.com------------------
【無料】βテスト中のバーチャルライドスレ【人柱】
メッセンジャーバッグについて part61
雑談スレ その13
荒川サイクリングロード season73
【Cannondale】キャノンデールのロード92進目
【台湾】GIANT総合スレ★16
初心者は100万円のロードを買ってはいけない?
荒川サイクリングロード 河口から355km