namazu-dev(ring)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: repository and TAG
Yukinori MAEDA <yuki@xxxxxxx> wrote:
>実は、namazu MLも、namazu-dev MLも入ったばかりで、現在どのよ
>うになっているとか、現在、どなたが commiter なのかとか全くわ
>からないのですが、よろしくお願いします。
こちらこそよろしくお願いします。 committer (commiter?) は今
のところ私と野首さんと前田さんしかいません。ほかのみなさまも
ぜひお願いします。 [namazu 678] 参照のこと。
>ここから、本題なのですが、どうやら、最近のnamazu MLを見てい
>ると、namazu-1.4系の開発はstopし、次期versionの2.0系の話を進
>めていこうという感じのようです。
そうです。v1.4 をリリースして、それが普及してしまうと互換性
を無視した改良がしづらくなってしまうので、v1.4 を見送って
v2.0 を作ろう、という意図があります。
>本日の朝cvsのユーザを作成して頂き、最新版を取得しました。こ
>れは、v1.4系と思われるので、もう触らない(commitしない)という
>ことなのでしょうか?
>
>それとも、これをベースに進めていくので、触っても良いのでしょ
>うか?
はい。このコードを元に進めていくつもりです。今までは私一人が
ソースを管理していましたが、今後は複数人で協力しながら開発を
進めていければ、と考えています。
ソースコードにはおかしな点がたくさんあると思います。遠慮せず
に、びしびしと指摘して修正してくださいませ。共同開発を通じて
勉強させてもらうつもりでいます (これが大きな目的なのだ)。
C言語の方は大の苦手なので、相当にひどいコードを書いているは
ずです。適宜、指摘して修正してもらえると助かります。 Perl の
方はだいぶ慣れてきたので自分なりの規則ができつつあります。参
考までに以前にまとめたメモをメイルの末尾に添付しておきます。
>というのは、ソースにリビジョン番号が入っていないため、非常に
>わかりにくいので、すべて $Id$ を入れてしまおうかと考えたので
>した。
えっと、ただいま私の方で入れておきました。
>また、ブランチ等はあるのでしょうか?
ないです。実をいうと私は CVSをつい最近、使いはじめたばかりな
ので、ブランチは作ったことすらないです。:)
>あと、何か暗黙の了解ごと見たいなことがあれば教えて頂きたいの
>ですが。
まだなにも決まっていません。とりあえず私が考えているのは
* namazu-dev メイリングリストで連絡を密にとる
* ソースを修正したら ChangeLog に記録を残す
* 大きな修正をする前には namazu-dev で宣言する
- 前もって宣言すれば仕事の分担ができる
* 小さな修正は事後報告で OK
- バグ修正など
* 不安なコードは namazu-dev にパッチを流して検討する
* コメントは英語で書く (世界進出にむけて :-)
- 残っている日本語のコメントは見つけ次第、英訳する
* 下手なコードを見つけたらやさしく指導する :)
* 名前付け規則をきちんと考える
- 英語として変な名前はやめよう
といったところです。が、私は共同開発の経験はほとんどないので
この辺のノウハウはわかっていません。その点においても、経験を
通じて身につけていけたら、と考えています。みなさま、よろしく
お願いします。
-- Satoru Takabayashi
見捨てないでくださいね :)
書法
* 必ず -w オプションを用いる
#! /usr/bin/perl -w
* 必ず use strict する
* local() は使わない
* 変数は使う位置で宣言する
- C言語のようにブロックの最初で宣言する必要はない
* 変数の宣言時にはできる限り初期化を行う
* for は for my $tmp (@foo) { ... } のように用いる
- my $tmp の部分が要 ($tmpのスコープをループ内に限定する)
* 戻り値は陽に return する
- サブルーチン最後の式が return される、というルールに頼らない
* built-in関数呼び出しの際は省略できる丸括弧はできるだけ省く
- ○ substr $str, $offset, $len; × substr($str, $offset, $len)
* 正規表現では $&, $', $` を使わない
- プログラム全体が遅くなるため
* サブルーチンの呼び出しは foobar() とする
- &foobar は不可 ("&" は不要)
* サブルーチンの定義ではプロトタイプ宣言を行う
- sub foobar($$$) { ... } のように
* $_ はできる限り使わない
- $_ はグローバル変数なので危険
* open() は使わない。 use IO::File を用いて
my $fh = new IO::File; $fh->open() とする
* ファイルは陽に閉じず、 destructor にまかせる
- $fh->close() しない (スコープで制限する)
* リファレンスは大いに活用する
* 既存の perl module を活用する
- 車輪の再発明をしない
* $| といった特殊変数はできるだけ用いない
- $| は STDOUT->autoflush(1) で代用できる
* グローバル変数はできるだけ使わない
* コードはできる限りモジュール化する
- APIを定めて拡張を容易にする
* 必要に応じて Object Oriented Programming を取り入れる
- すべてを OOP で書くことはない
* 長い正規表現には適宜 /x モディファイアを適用する
* 変数を使った正規表現には安全なら /o モディファイアを適用
する
* コメントは英語で書く
名前規則
* テンポラリな変数は型を問わず tmp という名前にする
* for 文のカウンタには $i, $j, $k を用いる
- 3段より深くしないように気をつける
* サブルーチン名は動詞 (+目的語)、変数名は名詞
- e.g. update_registry()
* 語の連結にはアンダースコア ('_') を用いる
- e.g. get_os_name(), $os_name
* 局所変数の名前は小文字
* グローバル変数の名前は capitalize し、アンダースコアを省
略する (要検討)
- $IndexType
* 配列、ハッシュの変数名は複数形にする (要検討)
- @files
* 変数名の省略はできる限りしない
- $on (OS name) などは不可
* が、必要に応じて省略する (要検討)
* 省略のルールは明確化する
- file handle -> fh
- pointer -> ptr
- index -> idx
- current -> cur
- protocol -> proto
- length -> len
- string -> str
- argument -> arg
- source -> src
- destination -> dest
- control -> ctrl
- module -> mod
- language -> lang
- 他にもあれば追加する
* 動詞は省略しない
* package が異なれば同じサブルーチン名を用いて良い
インデント
* インデントは 4文字単位
$foo = 1 + 2 + 3;
$bar = ((1 + 2) + 3) * 4;
if ($foo == $bar) {
print foobar($foo, $bar), "\n";
} else {
die "error";
}
sub foobar ($$) {
my ($foo, $bar) = @_;
return $foo + $bar;
}
Perl関連リンク
* CPAN
<ftp://ring.asahi-net.or.jp/archives/lang/perl/CPAN/>
* Perl Style
<ftp://ftp.dti.ad.jp/pub/lang/CPAN/doc/FMTEYEWTK/style/slide-index.html>
* perl5.005_02のドキュメント
<http://www.kt.rim.or.jp/%7ekbk/perl5.005/index.html>
* perl5.004_04のドキュメント
<http://www.kt.rim.or.jp/%7ekbk/perl5.doc/index.html>
* Perl information memo
<http://www.st.rim.or.jp/~cond/perlinfo/index.html>
* /pub/IIJ/dist/utashiro/perl directory
<ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl>
* /pub/lang/CPAN/authors/Hirofumi_Watanabe directory
<ftp://ftp.dti.ad.jp/pub/lang/CPAN/authors/Hirofumi_Watanabe>
* FMTEYEWTK
<ftp://ftp.dti.ad.jp/pub/lang/CPAN/doc/FMTEYEWTK/index.html>
* Yahoo! - Computers and Internet:Programming Languages:Perl
<http://www.yahoo.co.jp/Computers_and_Internet/Programming_Languages/Perl/>
* JPerl for Win32
<http://www.yk.rim.or.jp/~hizumi/perl/index.html>
* Index of /archives/lang/perl/CPAN/modules/by-authors/Gurusamy_Sarathy
<http://ring.nacsis.ac.jp/archives/lang/perl/CPAN/modules/by-authors/Gurusamy_Sarathy/>
* Learning Perl/Tk
<http://tanaka-www.cs.titech.ac.jp/~ueki/PerlTk/index.html>
* ActiveState Tool Corp. - Professional tools for Perl developers
<http://www.activestate.com/>
* Index of /archives/lang/perl/CPAN/modules/by-module/Tk
<http://ring.nacsis.ac.jp/archives/lang/perl/CPAN/modules/by-module/Tk/>
* What's wrong with Perl
<http://www.stud.ifi.uio.no/~larsga/download/artikler/perl.html>