私は2つの世界の間で引き裂かれ、コマンドラインツールにこの非常に直感的な(しかし複雑な)メカニズムがあり、これをどの程度説明すべきか疑問に思っています。
私はそれをまったく説明せずに簡単な方法で進むことができ、ユーザーがそれを自分で理解することを信頼しますが、そうすると一部のユーザーはこの特定の機能を決して発見しないかもしれません。
私は恐ろしい方法でヘルプ出力とマニュアルページに多くの数学表記を入れることができますが、ユーザーはこれが複雑すぎると思うかもしれず、私のツールやこの特定の機能に対して不可解な恐れを抱くかもしれません。
実験的なユーザーと、たとえば保守的なユーザー(何かが適切に説明されていないときに余分な努力をしないユーザー)の両方にどのように対処できますか?
詳細:
このツールは、日付と時刻の計算、特に2つの日付や時刻の間の期間の計算、およびフォーマット仕様に従って結果のフォーマットに関するものです。
私の内部設計では、次のような掛け算の九九を使用しています。
- x d t dt
x x x x x
d x D x D
t x x T x
dt x D x S
ここx
で、unknown(解析不能)入力、d
は日付、t
は時刻、はdt
日時、D
は日付期間(解像度は1日)、T
は期間(解像度は1秒)、S
はタイムスタンプ期間(解像度1秒)。
結果は、指定された期間の種類と形式の指定子によって異なります。これを説明する簡潔な方法が本当に不足しているので、例を挙げて説明します。
'%d' will return the duration in days (like 12 days)
'%w' will return the duration in weeks (like 1 week)
'%w %d' will return the duration in weeks and days (like 1 week and 5 days)
...
'%S' will return the duration in seconds (e.g. 86464 seconds)
'%M' will return the duration in minutes (e.g. 1441 minutes)
'%H' will return the duration in hours (e.g. 24 hours)
'%H %M %S' will return the duration in hours, minutes and seconds (24h 1m 4s)
'%H %S' will return the duration in hours and seconds (24h 64s)
...
たぶん、これらのいくつかの例を挙げれば、私が何を意味するのか理解できると思いますが、正式な説明などはありません。
明確にするために:
私が対処しようとしている問題は、任意のフラグ(秒、時間、日、月など)を組み合わせることができ、プログラムが「インテリジェントに」結果を提供することです。たとえば%Y %d
、1年と日数(0から365の範囲)が表示%Y %m %d
されますが、0から30の範囲の日数が表示されます(残りは月に「キャプチャ」されるため)。
例:%Y %d
与える1 year 90 days
一方%Y %w %d
与える1 year 12 weeks 6 days