好的设计的十大原则--迪特·拉姆斯

正因为好的设计没有一个明确的度量标准,于是迪特·拉姆斯开始提出他认为好的设计应该具备的十条标准。(这些标准常被人们称为“设计十诫”)

好的设计(gutes Design)应具备的十项原则:

  • 好的设计是革新的(Gutes Design ist innovativ.)
创新的可能性还远没有被穷尽。技术的发展不断为设计理念提供新的起点,以提升产品可用性。但设计的革新总应与技术的革新相连,永远不要为了设计革新而革新。
  • 好的设计是实用的(Gutes Design macht ein Produkt brauchbar.)
产品是供人使用的,它应履行一定的功能——主要功能以及额外的心理和审美上的功能。好的设计是为了提升产品可用性,与此目的无关甚至相悖的一切都不应加以考虑。
  • 好的设计是美观的(Gutes Design ist ästhetisch.)
产品的审美品质也是实用性的一部分,日常使用的器具影响着人们的生活环境和幸福感受。但只有真正优秀的产品才能是美的。
  • 好的设计使产品易于理解(Gutes Design macht ein Produkt verständlich.)
设计应当以合理方式表明产品结构,让产品说话。最好的设计是自明的,它能够自己解释自己。
  • 好的设计是谨慎克制的(Gutes Design ist unaufdringlich.)
履行某种功能的产品具有工具属性,它们既不是装饰物也不是艺术品。因此,它们的设计应该是中性的。器具应当隐退,为人的自我实现留出空间。
  • 好的设计是诚实的(Gutes Design ist ehrlich.)
产品不应该看起来比实际上更创新、更高效和更有价值,它不试图通过无法兑现的承诺来操纵消费者。
  • 好的设计是经久永恒的(Gutes Design ist langlebig.)
它避免迎合时尚,也因此不会过时。与短命的时尚设计形成鲜明对比,它即使在当今的一次性消费社会里也同样经久不衰。
  • 好的设计在极细微处也维持一致(Gutes Design ist konsequent bis ins letzte Detail.)
不要容忍随意和偶然。设计的逻辑性和准确性,最终都是表达对消费者的尊重。
  • 好的设计是环保的(Gutes Design ist umweltfreundlich.)
设计为保护环境作出了重要贡献。它涉及到节约资源,以及产品设计中最小化的物理和视觉污染。
  • 好的设计是尽可能少的设计(Gutes Design ist so wenig Design wie möglich.)
少即是多。设计侧重于要领,而不是产品上多余的废物。设计应当回归纯粹,回归简单。

以下是使用 C++ 实现的 Dijkstra 算法,并输出最短路径的代码示例: ```c++ #include <iostream> #include <vector> #include <queue> using namespace std; #define INF 0x3f3f3f3f typedef pair<int, int> iPair; class Graph { int V; vector<pair<int, int>>* adj; public: Graph(int V) { this->V = V; adj = new vector<iPair>[V]; } void addEdge(int u, int v, int w) { adj[u].push_back(make_pair(v, w)); adj[v].push_back(make_pair(u, w)); } void dijkstra(int src) { priority_queue<iPair, vector<iPair>, greater<iPair>> pq; vector<int> dist(V, INF); pq.push(make_pair(0, src)); dist[src] = 0; while (!pq.empty()) { int u = pq.top().second; pq.pop(); for (auto i = adj[u].begin(); i != adj[u].end(); ++i) { int v = i->first; int weight = i->second; if (dist[v] > dist[u] + weight) { dist[v] = dist[u] + weight; pq.push(make_pair(dist[v], v)); } } } cout << "Vertex\tDistance from source" << endl; for (int i = 0; i < V; ++i) cout << i << "\t" << dist[i] << endl; } }; int main() { Graph g(6); g.addEdge(0, 1, 5); g.addEdge(0, 2, 1); g.addEdge(1, 2, 2); g.addEdge(1, 3, 3); g.addEdge(2, 3, 4); g.addEdge(3, 4, 6); g.addEdge(2, 4, 7); g.dijkstra(0); return 0; } ``` 该代码使用了 STL 中的 vector 和 priority_queue,其中 vector 存储每个节点到其它节点的边及其权重,priority_queue 存储每个节点到源节点的距离及其节点编号,以便按照距离从小到大依次访问。在 dijkstra 函数中,首先将源节点加入 priority_queue 中,并将其距离设为 0。接着,依次访问 priority_queue 中的每个节点,并遍历它的邻居节点,更新它们到源节点的距离。最后,输出每个节点到源节点的最短距离。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值