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

■ このスレッドは過去ログ倉庫に格納されています
2008/03/08(土) 23:51:11
ありそうでなかったスレ
2008/03/09(日) 12:02:40
>>19
それは別にいいんじゃね?
2008/03/09(日) 13:23:24
インラインアセンブラを使うが逆効果
2008/03/09(日) 13:54:35
>>20
functionでないものを関数と呼ぶ理由はないと思われ
普通に「○○するサブルーチン」でいいじゃん
2008/03/09(日) 14:18:52
コードを手直ししてもコメントはそのまま。
2008/03/09(日) 14:29:15
>>22
下の様に書く言語もあるから,メソッドもプロパティも関数でいいんじゃね?w
class MyClass {
    function MyMethod() {
    }
    function get MyProperty() {
    }
    function set MyProperty() {
    }
}
25デフォルトの名無しさん
垢版 |
2008/03/09(日) 14:38:46
メソッドというと脳がショートする同僚がいるので、
例えどのようなものでも関数と呼ぶようにする。
クラスは最近慣れたらしいが構造体とか列挙子がと言ったほうが通じる。
2008/03/09(日) 14:39:52
動きや使いどころが違うものに似た記述方法を用いると、
分かりやすい部分もあるが、分かりにくい部分もあるな

27デフォルトの名無しさん
垢版 |
2008/03/09(日) 14:41:55
C++はメソッドをメンバ関数というな
オブジェクト指向性が中途半端なのが原因だが
2008/03/09(日) 15:01:04
コメントがない
29デフォルトの名無しさん
垢版 |
2008/03/09(日) 15:19:12
えーむしろ初心者の方がコメントを打つような気が。
ただしコメントの内容がわかりづらいけど。

#もし戻り値がfalseだったらエラーにする
if not foo(baz) :
  print "エラーです"
  sys.exit(1)

いや、それは見たら分かるから、どういうチェックさせている端的に書けと。
30デフォルトの名無しさん
垢版 |
2008/03/09(日) 15:27:31
簡単な処理をわざわざ難しく書く。
2008/03/09(日) 22:08:48
自分が書いたコードでも数日経つと読めない
2008/03/10(月) 19:53:23
int* null_ptr = NULL;
*null_ptr = 50;
33デフォルトの名無しさん
垢版 |
2008/03/10(月) 23:39:53
ポインタだとわからなくなるので
全部配列にする。
2008/03/11(火) 00:00:22
初心者に毛が生えると>>22のようにどうでもいいことにこだわりだしますw
2008/03/11(火) 02:38:23
俺が初めて作ったシューティングゲームは1ファイル15000行
2008/03/11(火) 14:33:12
起動しようとすると「〜.dll(デバッグ用ライブラリやダイナミックリンク用メモリマネージャなど)が見つかりません」と出る。
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
三流会社の基本(笑)
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況