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

■ このスレッドは過去ログ倉庫に格納されています
2008/03/08(土) 23:51:11
ありそうでなかったスレ
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の初版読んでスタイルが未だにそのままの人ですね、わかります。
2009/10/19(月) 03:25:00
わけのわかんない俺流よりは、いくらかマシだがな。
2009/10/19(月) 07:10:43
プログラミングは技能であるから本質的に独学以外に有り得ない。
2009/10/19(月) 08:57:13
・すぐ「本質的」という言葉を使いだす。
2009/10/19(月) 11:39:57
横並び共用体って何だと思ったじゃないか
141デフォルトの名無しさん
垢版 |
2009/10/19(月) 19:42:48
初心者はすぐに運命共用体になりたがる。
中2の美少女プログラマが俺と共用体になりたいって言ってきたから俺は
2009/10/19(月) 19:55:23
何そのエロゲ
2009/10/19(月) 21:17:52
K&Rの初版本はC89やC99の本じゃないので、
それを読んでC89やC99を使うのは無理。
C89を使うならK&Rの第2版を読んでください。

で、C89を使うのにK&Rの第2版すらも読んでないような人は
独学以下なのでしんでください。
2009/10/19(月) 21:55:34
老害じゃー
2009/10/19(月) 22:02:01
>>135
「新人を教育するならなにも知らないやつがいい。
独学でかじったやつは変なクセがついている」

↑みたいなことを言うやつを見かけることがあるけど、

「自分で本とかネットの記事とか読んだりしません。
職場で先輩の書いたコードしかみません。先輩直伝のテクニックはすばらしいです」

↑みたいなやつばっかりの職場のほうが、ガラパゴス化して、よっぽどクセが強くなってるって
いうか、すごいことになってるな。
146デフォルトの名無しさん
垢版 |
2009/10/20(火) 02:04:24
先輩や研修で教わったことから
もっと積極的に学ぶ姿勢みせて
たくさん覚えていくのならいいが

教えてもらうまで待つみたいな
指示待ち初心者が使えないの

入社前に独学で学んでた奴は
変な癖とかがあった場合に困る
長年染み付いた癖は中々落ちん
1人変なプログラム組んで全部
プロジェクトダメにしたりするから
2009/10/20(火) 02:19:01
明らかに変なコードなのだが手を入れる余裕がなくて
そのまま無理矢理な修正するから余計に訳がわからなくなっていく
2009/10/20(火) 02:54:33
なにも知らない新人がいい、って、とにかくプロジェクトに
突っ込んで頭数になれば稼げる時代の遺物じゃね?
2009/10/20(火) 03:49:09
何か嫌なことでもあったのだろう。そっとしておいてやれ
2009/10/20(火) 08:50:23
STLアルゴリズムを使ったコードを変なコードだと思ってたらやだなあ
2009/10/20(火) 11:46:49
関数を自分で創るという概念が理解できない
152デフォルトの名無しさん
垢版 |
2009/10/20(火) 12:36:15
ある機能(俺の場合、文字列を逆順にするメソッド)がほしかったけど
その関数が見つけられなくって
自分で関数作ってそれをずっと使ってた
数年後に気づいたが、標準でその関数が備わってたことに気づいたとき
2009/10/20(火) 21:27:10
>>148
このネタふると、必死に反論してくるやつが必ずいるから、そう思ってるやつ多いんじゃね?
自分のダメさかげんを、新人がダメだってことにして、合理化してるんだろ。

だいたいなにも知らないやつのほうが素直なコードを書くとか、我流でやると
クセがついて直らないとか、スポーツのアナロジーで捕らえてるのも頭悪いし。
2009/10/20(火) 21:40:23
経験不足で間違うのは未熟者の浅薄
経験則で間違うのは成功者の浅薄
お互いに信じる正義をかけた血みどろの戦いになるに決まってる

初期化と代入が別のものであることを知らない
2009/10/20(火) 22:27:29
おまえらコードレビューとかしないの?
プロジェクトのコード規約に準拠してない変な癖なんて速攻で突き返すよ
2009/10/20(火) 23:20:19
コーディング規約のチェック目的のレビューって、経験無いな。
規約から外れてるのは、レビューの時に指摘する事はあるけど、
レビューに持ってくる前にチェック済ませとけだな。

ところで、規約から外れてるのと、変な癖とは別物だとおもうが。
どっかのコーディング規約のせいで変な癖がついてるやつもいる。
2009/10/20(火) 23:26:52
>レビューに持ってくる前にチェック済ませとけだな
それ突き返すってことじゃねw

変な癖ってのの例が1つも出てないからこの話はよくわからん
2009/10/20(火) 23:35:03
>>157
>それ突き返すってことじゃねw
そう言われれば、たしかにそうw
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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