【发布时间】:2014-11-10 15:05:42
【问题描述】:
我正在编写一个 Clojure 程序来帮助我执行安全风险评估(终于厌倦了 Excel)。
我有一个关于 Clojure 习语和风格的问题。
为了在风险评估中创建关于资产的新记录,我传递了我目前正在使用的风险评估(地图)和一堆关于资产的信息,我的 make-asset 函数创建了资产,将其添加到 RA 并返回新的 RA。
(defn make-asset
"Makes a new asset, adds it to the given risk assessment
and returns the new risk assessment."
[risk-assessment name description owner categories
& {:keys [author notes confidentiality integrity availability]
:or {author "" notes "" confidentiality 3 integrity 3 availability 3}}]
(let [ia-ref (inc (risk-assessment :current-ia-ref))]
(assoc risk-assessment
:current-ia-ref ia-ref
:assets (conj (risk-assessment :assets)
{:ia-ref ia-ref
:name name
:desc description
:owner owner
:categories categories
:author author
:notes notes
:confidentiality confidentiality
:integrity integrity
:availability availability
:vulns []}))))
这看起来是一种明智的做法吗?
我可以让它更惯用、更短、更简单吗?
我正在考虑的具体事情是:
- 是否应该将资产添加到风险评估中? (资产在风险评估之外毫无意义)。
- 有没有更简单的方法来创建资产;和
- 将其添加到风险评估中?
谢谢
【问题讨论】:
-
select-keys 是你复制的朋友clojuredocs.org/clojure_core/clojure.core/select-keys