質問: タイトルを見てこの質問を見てくださりありがとうございます。 タグを見てこられた方、内容と異なることがあります。申し訳ございません。 質問する内容先が少々間違っているのかも知れませんが、皆様のご意見を聞けたらと思います。 プログラミングをしていると毎回使うようなコードがあると思います。 関数にするようなものではなく(処理をする上で関数化できない)、雛形というのでしょうか、テンプレートというのでしょうか、決まりきった形があると思います。 例えばですが、私は職業上C言語の組み込み系のソフトを作成しているので、 プログラミングをしていると、「これはあの時使ったコードが使えるな」ということが多々あります。 そのつど、その時作成したソースをみてコピペしてくるといった作業をしています。 しかし、中には「何に使ったか忘れた」というものも多く探すのに手間取ったり最終的に書き直すこともあります。 上記にて関数にできないと述べていることに関しましては、 装置ごとによっては丸々流用できない、一部を変更しなければならない、また社内ルールにより基本的に関数を増やさない(増やすほどのものでもないものもあれば、割り込みの関係でやってはいけない→破損するため)ということもあり、毎度何かよい方法はないかと思い模索していました。 そこでメモ帳に保存してみたり、エクセルに保存してみたりとしてみたのですが、いまいちパット出てこない、または見にくいとの事があり却下されたりしました。 コードにも大きく分類できるので分類できたらと思いエクセルを利用して項目ごとにシートを分けて使いたいものをクリックするとVBAが起動しそこにソースがあるというものも作成してみたのですが、 ・新しく追加する際に手間がかかる ・変数など毎度エラーをはかれるので使いにくい ・容量が大きすぎて使いにくい などとのことがあり却下。 そこで皆様に質問です。 作業効率を上げるために皆様はどのような工夫をしていらっしゃるでしょうか? フリーソフト、自作ソフト、様々なものがあると思いますが、個人使用ではなく、誰かと共有しなければならないという時になにかよい方法などがあればご意見をお聞きしたく思います。 しつこいようですが要点をまとめますと ・ソースコード(雛形・テンプレート)を管理、保存したい →変更が必要な箇所(例えば変数名・符号)もありあくまでも雛形を保存したい ・分類分けをしたい →例えばですがエラー検出、PID制御など このサイトの趣旨とは少し外れているかもしれません。 他所で聞けと思う方もいらっしゃるかもしれません。 気分を悪くしてしまったら申し訳ございません。 技術の向上、作業率の向上にご協力いただければ幸いです。 また、私の知人にも相談したところ同じ様なことは思っていたとの事でした。 私以外にも同じ事を考えている人はいるようなので、この質問からよい結果が出せたらと思います。 長文失礼いたしました。 何卒よろしくお願い致します。 追記 ベストアンサーを選択させて頂きました。 皆様の回答がどれも私的にはベストアンサーで選択に迷いましたが、 最終的な目標として選ばせて頂きました。 中では学習時間といったご回答を頂きました。 確かにおっしゃる通りかもしれません。 今は「業務に取り組むことが学習、教材などはなく分からないものは個々で学習」 というのがあるような気がします。 確かに個々のスキルはあがりますがこのままだと組織としてはよくないですね。 スニペットの存在やオープンソースプロジェクトでこのようなものがあると いうことが私的にとても大きくまさしくこれらを求めていたような感じです。 一応、独自技術?にあたいするものになるので秘守性は高くなければならなく外部には漏れないようにしなければならないのですが対策もありそうで安心しました。 まずはスニペットから始まりオープンソースプロジェクト系のものへ移行できると いいかなと考えています。 調べ進めた中で、いきなりの導入は難しいと考えたためまずはオフラインでこつこつとはじめてみようかと思います。 その中で、ほぼ固定になるものが出てきたら関数化していくなどの方法が現状のベストになるかと思います。 回答を頂いたように関数の作成にも意欲的には取り組んでいこうと思います。
回答: > > 社内ルールにより基本的に関数を増やさない > > > この部分が引っ掛かります。 もっと詳しくお話しを聞いてから判断すべきかもしれませんが、社内ルールの点がひっかかりるため、独断にて厳しめな意見をいうと、nodactさんの職場では、コーディングに関して業務時間内外問わず、書籍などで学ぶ環境がないのではないかと心配しております。基本的には、コーディングをする全員が学ぶ必要があります。 なぜ、このようなこと書くかというと、2つあります。1つは、私がそのような職場にいたことがあること、もう一つが、関数を共通処理のためという考えをしていることです。 関数は共通処理を行うためにあるのではありません。処理を一定のまかたりにまとめ、コードを見やすくしたり、テストしやすくしたりして、バグのないコードを書くための基本テクニックです。 関数を作らない環境の方だと、関数を増やすと処理が追いづらくなるといった意見が出るはずです。その点は間違いなく慣れの問題で、適切な関数の分割と適切な関数名をつけるようになると処理のタイトルが羅列してあるコードのように見通しが良くなります。 また、エラー処理などの環境依存が強い部分はオブジェクト指向やコールバック関数(関数ポインタ)などを使えば、共通処理化できるはずです。(はじめはコピペで仕様が固まったら共通関数にしてもいいと思います。)ユニットテストツールを使えば、現行の機能を維持したまま、機能追加もできます。 この点は、実際やってみないと実感できないかもしれませんが、まずは共通処理のためでなく、読みやすさのために関数を作ることをはじめて見ることを強くお勧めします。