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

■ このスレッドは過去ログ倉庫に格納されています
2008/03/08(土) 23:51:11
ありそうでなかったスレ
2008/03/11(火) 19:39:36
>>33
逆に、高速化を狙いポインタを使ってわけのわからないことをする
38デフォルトの名無しさん
垢版 |
2008/03/11(火) 20:25:55
ファイル名がうんこ
2008/03/11(火) 21:04:21
細かく分けすぎ&雑な名前付けのせいで、何をする関数か当人でも即答できなくなる
2008/03/11(火) 21:12:03
>>37
その挙句に、却って遅い罠。
2008/03/11(火) 22:03:10
>>36
しかもそのdllがない客先でそれを起こす。
2008/03/11(火) 22:04:36
変数名をworkとかa,b,num等の名前から内容を推測できないものにし、しばらくしてから書いた本人も読めなくなる。

・・・というのは誰でも初めはやるわな。
むしろ早い段階でやっておいて、後悔したほうが勉強になっていい。


あと、インクリメント演算、デクリメント演算を使わない、for文を使わないなどもあるね。

最初はそれもいいと思うけど、とりあえず書けるようになってきたら、
頑張って使う努力をしないと何時になっても使えない気がする。
2008/03/11(火) 22:43:19
>>38
俺は今でも使うぞ
2008/03/11(火) 22:48:52
cntとか下品な言葉を使いまくりのやつとか。
2008/03/11(火) 22:52:20
それ、カントのことじゃないよ?
2008/03/11(火) 22:58:17
>>44
警察のどこが下品なの?
47デフォルトの名無しさん
垢版 |
2008/03/11(火) 23:13:07
>>44
関東と近畿
48デフォルトの名無しさん
垢版 |
2008/03/11(火) 23:21:25
巨大なクラスと巨大なメンバ関数が
ほとんどを占めていて大丈夫か?
と思うが、意外と何でもできる。
こいつ天才か?と、
でも
次の瞬間シヌ。
49デフォルトの名無しさん
垢版 |
2008/03/11(火) 23:24:55
if の連続で、よくみたら
最初のif が閉じたのが数ページ後
2008/03/11(火) 23:29:15
確かにありそうでなかったw

これ、何故動かないのか悩みに悩んだソース。

10 A="PRINT"
20 A "HELLO"

run
Syntax Error in 20


ほんとのほんとに初心者だったからなぁ。
2008/03/11(火) 23:45:38
>>50
プログラマの素質がありません
2008/03/12(水) 00:02:53
ド・モルガンの法則を知らない
2008/03/12(水) 00:31:30
うちの会社のソースが、殆ど当てはまるなぁ
>>49とか
おわっとる
2008/03/12(水) 01:03:50
>>52
それ自体は知らなくてもしばらくやってたら自分で発見するだろ、普通

と思ってた時期が俺にもありました・・・・
2008/03/12(水) 01:29:44
集合論は数学Aの修学過程に包含されて高校1年後期〜2年前期で習うわけだが…。
56デフォルトの名無しさん
垢版 |
2008/03/12(水) 03:10:00
ワード単位でごっそりMOVするくせにTSTやTSTNでせこくビット展開した挙げ句、
XFERやXFRBを駆使して点在した値を再度ワードアドレスに転送したりする。
よく分からなくなったら立ち上がり微分のb接点で自己保持を切ったり、強引にRSTかましたりする。
2008/03/14(金) 17:52:30
>>56
電気屋乙
2008/03/15(土) 13:52:54
not (2 < a and a < 8)
のとき
2 >= a or a >= 8
と同値ってすぐ判るよな?
2008/03/15(土) 15:31:54
多くの言語では違うと思う
2008/03/15(土) 15:38:10
それはないw
2008/03/15(土) 16:13:24
>>58
お前がすぐ判らないのは判った
2008/03/15(土) 16:29:58
演算子の優先順位に依存します
2008/03/15(土) 16:43:40
>>59-62はおいといて、

2 >= a or a >= 8
ではなく
a <= 2 or 8 <= a
って書いてほしいんだけど!!!!
2008/03/15(土) 22:40:31
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)
とか冗長な書き方するのは別にいいと思う
「視認性の為の冗長さをかっこわるいと思う」ってのも初心者にありがちじゃないかい
2008/03/15(土) 22:41:04
初心者に毛が生えると>>58のように凡ミスをします
2008/03/15(土) 22:46:15
>>64
それはandの場合ならね
2008/03/15(土) 22:50:52
>>64
無駄をかっこわるいと思うのは初心者じゃなく中級者じゃね
2008/03/15(土) 23:01:31
>>62
カッコつければいいだけじゃないかっ
優先順位的に必要なくてもカッコつけたほうが処理の括りとしてわかりやすい場合もあるしね
69デフォルトの名無しさん
垢版 |
2008/03/16(日) 19:08:46
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リフレッシュを行う。
2008/03/18(火) 02:11:28
>>50
イキロ
2008/03/20(木) 12:50:36
最近の言語では
a = print
a("hello")
が普通に動いたりするし、ある意味時代を先取りじゃね?w
2008/03/20(木) 14:14:52
>>71

#include <stdio.h>
main(){
int (*a)(char*, ...);
a=printf;
a("hello");
}
2008/03/20(木) 14:51:51
C++0xだとさらに

auto a = printf;
a("hello¥n");
2008/03/21(金) 15:39:13
Java でクラス一つ、メソッド多数、main() の中で手続き型構造化プログラミング。
2008/03/30(日) 18:47:40
>>73
お前いい事言うな。
出来るか?
なら今すぐやれ。
2008/03/30(日) 19:15:31
gccならできるだろ
2008/03/31(月) 23:02:45
>>73
それって型推論でもやってるの?
auto pi = 3.14;
とかもあり?
autoってauto intの略だったような記憶が。
2008/03/31(月) 23:18:14
>>77
型推論用にautoキーワードができた。
その例だと、環境にもよるけどpiはdoubleになる。
2008/03/31(月) 23:22:41
サンクス
そりゃ便利だな。g++にはfinallyもあるし結構ツボな拡張が多いよね。
gccはほとんど使ったことないんだけどw
8050
垢版 |
2008/03/31(月) 23:30:12
>>72
#define a printf
main () {
a( "hello" );
}
こっちのが近い感じかも。

ちなみに当時小学1年か2年。子供の発想力って凄いわ。
2008/03/31(月) 23:31:05
>>79
g++というか時期C++がそうなる予定。
g++がTechnical Reportの一部をお試し実装しているということ。
2008/04/01(火) 00:40:45
C++0xでググれ
2008/04/01(火) 11:09:41
でもfinallyは現状でもかなりの処理系で実装されてるよね
2008/04/01(火) 23:37:20
ちなみにfinallyは時期C++でも非標準だからね。
2008/04/05(土) 11:27:32
init();
try{


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

begin{
 init();
} end {
 done();
} main {


}
にしてくれ。
2008/04/06(日) 00:44:47
距離が遠すぎると感じるくらい詰め込みすぎのプログラムは初心者にありがちですね
2008/11/22(土) 00:38:25
ボトムズに乗れば勝機はある
2008/11/28(金) 11:42:38
わざわざスペース入れるの面倒臭い
詰め詰めで書いて後で整形ツールで一括整形するわ
というか構文木で保存しておいて編集するときは整形ルールを適用して表示するようにすりゃいいのだ
XMLとスキーマみたいにさ
2009/01/06(火) 11:45:27
>>88
>構文木で保存しておいて
最初からLispで書けよ
2009/02/16(月) 02:36:59
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 = 値
2009/07/03(金) 14:40:39
>>90
Delphi だと

with foo.bar.baz.hoge do begin
 fuga1.Text = XXX;
 fuga2.Text = XXX;
 ...
 fuga23.Text = XXX;
end;

だな なつかしい
2009/07/06(月) 17:45:03
>91
いや、VBにもほぼ同じ機能の With があるんだよ
なのに >90 みたいなコード書く人が居るからスレタイ通りなワケで…
2009/07/07(火) 09:42:45
まぁ、withを使うのは下策だとする書籍もあるがな。曰く、検索したときにヒットしにくいとか。
あれは誰の書いた本だったか。物書きとしては兎も角、技術者としては初心者レベルだったのだろう。
2009/07/17(金) 20:02:25
どっちかっつーとwith云々よりも
fuga1〜fuga23を一々書いてる辺りが問題じゃね?
配列的な何かが使えないのか
95デフォルトの名無しさん
垢版 |
2009/09/24(木) 21:36:43
配列を使わないでText1、Text2…
って変数作っちゃったことはあるな。そう言えば。
2009/09/24(木) 22:06:32
MFC使ってるとブトゥンウィンドウひとつごとに
CButton button1;
CButton button2;
CButton button3;
ってデータメンバ作っちゃうことなんて普通。プチスール。
2009/09/27(日) 20:55:44
>>96
クラスウィザードないと何にもできない奴とか、いるからなー。
オブジェクトがいくつあろうと配列にしてないから、
メッセージマップもひとつづつ指定しやがる。
2009/09/28(月) 09:18:18
VB6とかなら


dim a as variant

a = "123"

dim i as long

i = a

こんな感じの暗黙キャストしまくりとかあったな…
99デフォルトの名無しさん
垢版 |
2009/10/04(日) 00:44:08
こんな酷いの専門の時よく見たなぁ

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);
}
100デフォルトの名無しさん
垢版 |
2009/10/04(日) 07:46:05
ファイル分けで躓く
とりあえず動かせるようにと、ファイル間共有する変数は全てextern
書きなおすより作りなおしたほうが早いことに気付く

自分はそうだった……
2009/10/04(日) 07:57:43
俺は昔extern知らなくてファイルが肥大傾向にあった

2009/10/04(日) 10:37:51
externは最初何でもかんでも1つのファイルに詰め込んでた時は
ワケがわからなかったが、ファイル分けをするようになってこりゃいいやと思った。
で、余計なのまで指定して動かない。

ポインタも理解できたと思い込んでこりゃすげーかっこいい!と思って
ポインタ使いまくったコードを組んだが動かない。

未だにそんなことの繰り返しですわ。
2009/10/04(日) 15:34:00
constを使わない
2009/10/04(日) 20:30:41
#define VALUE_100 100
2009/10/12(月) 12:16:50
妙にハイテンションで意味不明なコメントがある。

過去にローカルネタ書いた折れはアホ顔で逝ってよし。
106デフォルトの名無しさん
垢版 |
2009/10/15(木) 13:40:35
調べればすぐに見つかる有名で簡単なアルゴリズムとか

たとえばソートアルゴリズムとか

自前で考えて作ってる

2009/10/15(木) 15:14:14
>>105
デスマが終わりそうな気配になるとよくやりますよね
108デフォルトの名無しさん
垢版 |
2009/10/16(金) 01:45:31
if (flag==ture) {
 hoge();
}

一行だろうとカッコでくくる
2009/10/16(金) 01:57:15
不用意に flag == true と書く
不用意に {} を省略する
スペルミスが多い(true と ture と書くなど)
110デフォルトの名無しさん
垢版 |
2009/10/16(金) 03:56:30
trueでは無い。tureという名の変数だ
2009/10/16(金) 03:58:18
ワロタw
2009/10/16(金) 11:23:24
booleanでない変数にflagという名前をつける。

# この前見たflag変数は構造体だった……
2009/10/16(金) 12:01:35
>>106
それがバグってるからさらに困るwwwww
2009/10/16(金) 15:05:33
>>108
IDEがかってにカッコを入力してくれるんだから問題ない
2009/10/16(金) 15:10:13
うちのコーディング規約だと一行野郎以外は括ることになっているんだよね。
つまり、
if (flag) hoge();
でなければ
if (flag) {
hoge();
}
とか
if (flag)
{
hoge();
}
116デフォルトの名無しさん
垢版 |
2009/10/16(金) 16:26:34
プログラムに関わらず物作りの初心者は模倣から入るのが基本なのに
全部自身のオリジナルで構築しようとする
2009/10/16(金) 16:28:14
そうやってダメな横並び社会になるんだなw
2009/10/16(金) 20:12:19
どうせみんな、模倣から入ってパクりで終わる。
2009/10/16(金) 20:41:30
三流会社の基本(笑)
2009/10/17(土) 03:20:25
エラーが出るとコンパイラのバグを疑う。
2009/10/17(土) 08:58:59
printfをはさむとなぜかバグらなくなる
2009/10/17(土) 09:56:31
ブレークポイントをやたらに設定する
関数の開始位置全部とか
123デフォルトの名無しさん
垢版 |
2009/10/18(日) 03:44:16
玄人はデバッグなんかしないんですよね。たしかデバッグ専門の人に丸投げするんですよね。
2009/10/18(日) 11:43:21
int a,b,c,d,e,f, ......., x,y,z,aa,ab,ac,...............;
void main(){
2009/10/18(日) 11:45:31
以下コーディングスタイルの話は禁止
2009/10/18(日) 12:48:37
変数名や関数名は自由に決められないと思っている
2009/10/18(日) 13:46:04
ローマ字読みで関数名や変数名を付けるのが格好悪いと思って
無理にでも英語にする
2009/10/18(日) 13:47:13
それ俺だ
2009/10/18(日) 14:26:37
>>127
あぁ、それ未だにやるわ
コメント書いときゃIDEが説明表示してくれるから大丈夫だよね なんて言い訳しながら
130デフォルトの名無しさん
垢版 |
2009/10/18(日) 21:28:03
むしろ初心者の方が、日本語をローマ字で書いたような変数名を平気でつける印象があるが。
2009/10/18(日) 21:33:13
業務固有の用語とか英訳できないんでローマ字。
132デフォルトの名無しさん
垢版 |
2009/10/19(月) 00:32:21
酷いのは独学プログラマー
2009/10/19(月) 00:40:51
横並び共同体
134デフォルトの名無しさん
垢版 |
2009/10/19(月) 01:13:11
誰かに指導してもらったとかじゃなくて
独学はソースが汚すぎ
2009/10/19(月) 02:10:42
独学でもちゃんと「名著」って言われる書籍を何冊か読んでる人なら問題ないけど
ほんっとうにその辺の(大学教授ですらない日本人が書いた)クソ本をさらっと読んだだけの人とかは
まじで大弱り。
2009/10/19(月) 02:47:56
>独学でもちゃんと「名著」って言われる書籍を何冊か読んでる人なら問題ないけど

K&Rの初版読んでスタイルが未だにそのままの人ですね、わかります。
■ このスレッドは過去ログ倉庫に格納されています