タグ付けされた質問 「programming-logic」

16
TDDが役に立たなかったときに、コードの論理的な間違いを避ける方法は?
私は最近、イベントがどれくらい古いかを人間に優しい方法で示す小さなコードを書いていました。たとえば、イベントが「3週間前」または「1か月前」または「昨日」に発生したことを示すことができます。 要件は比較的明確であり、これはテスト駆動開発に最適なケースでした。テストを1つずつ作成し、各テストに合格するコードを実装しましたが、すべてが完全に機能するように見えました。本番でバグが現れるまで。 関連するコードは次のとおりです。 now = datetime.datetime.utcnow() today = now.date() if event_date.date() == today: return "Today" yesterday = today - datetime.timedelta(1) if event_date.date() == yesterday: return "Yesterday" delta = (now - event_date).days if delta < 7: return _number_to_text(delta) + " days ago" if delta < 30: weeks = math.floor(delta / 7) …

14
「または」論理的に定義する方法
最近、論理的な「OR」演算子をプログラムで定義する必要がある問題に遭遇しましたが、演算子自体は使用していません。 私が思いついたのはこれです: OR(arg1, arg2) if arg1 = True and arg2 = True return True else if arg1 = True and arg2 = False return True else if arg1 = False and arg2 = True return True else: return False この論理は正しいですか、それとも何か見落としていましたか?

15
Try / Catchを論理演算子として使用するかどうかの引数[非公開]
Try-Catchブロックを論理演算子として使用する会社のアプリで素敵なコードを発見しました。 つまり、「何らかのコードを実行し、このエラーがスローされる場合、このコードを実行しますが、それがこのエラーをスローする場合、代わりにこの3番目の処理を実行します」。 表示される「else」ステートメントとして「finally」を使用します。 私はこれが本質的に間違っていることを知っていますが、戦いを始める前に、よく考えられた議論を望んでいました。 また、この方法でTry-Catchを使用するための引数がある場合は、教えてください。 疑問に思っている人にとっては、言語はC#であり、問​​題のコードは約30行以上あり、特定の例外を探しています。すべての例外を処理しているわけではありません。

7
if / elseブロックで真理値表を最小にする方法
真理値表を取得して、それをコンパクトなifブロックに変換するにはどうすればよいですか? たとえば、AとBが条件であり、x、y、zが可能なアクションであるこの真理値表があるとします。 A B | x y z ------------- 0 0 | 0 0 1 0 1 | 0 0 1 1 0 | 0 1 0 1 1 | 1 0 0 ブロックの場合、これは以下に変換できます。 if(A) { if(B) { do(x) } else { do(y) } } else { do(z) } これは簡単なサンプルですが、多くの場合、さまざまな方法で組み合わせてさまざまな出力を生成するいくつかの条件があり、ifブロックでロジックを表現する最もコンパクトでエレガントな方法を見つけるのは困難です。

5
条件式でビット演算子を使用するのが適切な場合
まず、いくつかのバックグラウンド:私はトレーニング中のIT教師であり、10年生のクラスにjavaのブール演算子を導入しようとしています。教師と指導者は、準備したワークシートを確認し、単一の&または|を使用できるとコメントしました。「同じことをする」ため、演算子を示します。 &と&&の違いを認識しています。 &は、整数間の使用を目的としたビット単位の演算子で、「ビットトゥイドリング」を実行します。 &&は、ブール値間で使用するための条件演算子です。 これらの演算子が常に「同じことをする」わけではないという点を証明するために、ブール値間でビット単位を使用するとエラーが発生する例を見つけました。この例を見つけました boolean bitwise; boolean conditional; int i=10, j=12; bitwise = (i<j) | ((i=3) > 5); // value of i after oper: 3 System.out.println(bitwise+ " "+ i); i=10; conditional = (i<j) || (i=3) > 5 ; // value of i after oper: 10 System.out.println(conditional+ " "+ i); …

2
サブスクリプション、残高、価格プランの変更の処理[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 序文 私の目的は、サブスクリプションを管理するために、複数のプロジェクト用の再利用可能なコードを作成し(そしてgithubで公開することです)。ストライプと定期請求プロバイダーについては知っていますが、このモジュールが目指しているのはそれではありません。アカウントの残高を計算するためのラッパー/ヘルパー、サブスクリプションを更新するための簡単な通知、および価格計算を処理するための単なるラッパー/ヘルパーでなければなりません。 プロバイダーまたは支払いの可能性が不十分またはまったくサポートされていないか、高額すぎる(マイクロペイメント)ため、繰り返し請求を使用できない国があります。また、定期的な請求を使用したくないが、年末に請求書を手動で支払う/請求書を保存する人もいます。したがって、PayPalの定期的な請求、繰り返しまたは同様のサービスを提案しないでください。 状況 サブスクリプションプランにサブスクライブできるモデルがあるとします(例:)User。このモデルには、現在サブスクライブしているサブスクリプションプランの識別子を格納するフィールドがあります。そのため、計画が変更されるたびに、変更が記録されます。 SubscriptionPlanChanges前述の変更を記録する次のフィールドを持つモデル(など)があります。 subscriberサブスクライブモデルに関連する(Userこの場合) from_plan モデルが変更前に持っていたプラン識別子を定義する to_plan モデルが現在選択しているプラ​​ン識別子を定義する created_at 変更を保存する日時フィールドです valid_until 実際のサブスクリプションが有効になるまで日付を保存します paid_at また、サブスクリプションが支払われたかどうか(およびいつ支払われたか)を定義する日時フィールドです。 もちろん、そのレイアウトは議論可能です。 アカウント残高の質問 ユーザーがサブスクリプションプランを変更する場合、プランフィールドを比較し、価格を取得し、現在のプランvalid_untilとその価格に基づいて新しいプランの控除を計算する必要があります。説明:プランAの1年間をサブスクライブしましたが、6か月後にプランBにアップグレードすると、プランAの6か月の支払額の半分が差し引かれます。 私が不思議に思っているのは、ユーザーが無料プランに切り替える場合など、ユーザーが再度切り替えたい場合に控除できるクレジットを持っていることです。その値を追加のフィールドにキャッシュするか、そのユーザーに関連するすべてのレコードを毎回計算しますか?テーブルのレイアウトについて何か追加/変更しますか? わかりやすさの質問 サブスクリプション期間の終わりが来ると、ユーザーは通知を受け取り、再度支払うことでサブスクリプションを更新する可能性があります。最も簡単な方法は、更新するだけpaid_atでvalid_until、新しいサブスクリプションオプションを使用することです。ただし、支払い/購読履歴など、誰かが必要とする可能性のあるすべてのデータを保存するかどうかはわかりません。 別のオプションは、このための追加レコードを作成するだろうfrom_planとto_plan(したがって、「変化なし」を象徴しない)同じ識別子を持っているし。しかし、それは何らかの形で口座残高の計算を妨げませんか? そのようなサブスクリプションを処理するロジックについて誰かが私を正しい方向に向けることができたら、とても感謝しています。 更新 今では助けてくれてありがとう。私の質問はあまりにも曖昧だったので、抽象化を少なくして、より正確になろうと思います。残念ながら、まだ問題を解決できませんでした。 ケースA Userはを選択できますSubscription Plan A。これは現在SubscriptionPlanChange、それを追跡するために保存されます。たとえば5か月後User、サブスクリプションをにアップグレードしますSubscription Plan B。そのため、彼は新しいサブスクリプションの価格を支払い、未使用の7か月のプランaの価格を差し引きます。 ケースB 3か月後、User彼のに戻りSubscription Plan Aます。彼は支払いをする必要はありませんが、残高を受け取るので、サブスクリプションの終了時に、彼は新しいサブスクリプションのためにその残高を差し引きます。 ケースC Userでは、独立したサブスクリプションプランを持つサブサービスのサブスクリプションプランを選択できます。同じでCase A、Case Bそのサブサービスのサブスクリプションに適用できます。 _Case D_ ユーザーがサブスクリプションの1つをキャンセルします。これにより、彼のバランスが回復します。 私の質問(少なくとも現在)は、主にそのデータを適切に保存する方法に依存しているので、ビジネス分析のためにサブスクリプションの履歴を再現し、残高を計算し、サブスクリプションに基づいて未払いを得ることができます。 また、ユーザーモデル自体などに残高を保存する必要があるかどうか、または保存されていないが保存されたデータ/履歴に基づいていつでも計算できるかどうかもわかりません。 注意すべき点がいくつかありますが、問題が発生することはないと思います。 …

7
プログラミング知識とプログラミングロジック
2つのトピックに違いはありますか?私は、企業がグッドプログラミングの知識を求めているグッドプログラミングロジックを見てきました。 開発者のジョブプロファイルでこれを確認しました。たとえば、「優れたプログラミングロジック」、「強力なプログラミング知識」などです。 プログラミングの知識は、考慮中の言語に関する知識に関連していると思います。プログラミングロジックは、プログラミングを使用した問題解決ロジックです(一般的に)。 私が間違っていたら訂正してください。また、何がより重要ですか? 編集:アプリケーションのコンポーネントの選択、ユーザー入力を検証するインターフェイスの設計は、プログラミング知識またはプログラミングロジックに該当しますか? プログラミングロジックは単に問題解決を意味するのでしょうか、それともそれを構成する他の何かがありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.