使用说明书
说明书
H5,H5页面制作工具
- 详尽的使用说明书
- 维基百科,自由的百科全书小黄鸭调试法,又称橡皮鸭调试法、黄鸭除虫法(Rubber Duck Debugging)是可在软件工程中使用的一种调试代码的方法。方法就是在程序的调试、除错或测试过程中,操作人耐心地向小黄鸭解释每一行程序的作用,以此来激发灵感与发现矛盾。此概念是参照于一个故事。故事中程序大师随身携带一只小黄鸭,在调试代码的时候会在桌上放上这只小黄鸭,然后详细地向鸭子解释每行代码。[1]许多程序员都有向别人提问及解释编程问题的经历,而目标甚至可能是完全不懂编程的人。而就在解释的过程中,程序员可能就发觉了问题的解决方案。一边阐述代码的意图,一边观察它实际上的意图并做调试,两者间的任何不协调都会变得更明显,使人更容易发现错误所在。[2]如果没有玩具小鸭,操作人也可以向其他任何东西倾诉,比如桌上的盆栽、键盘/鼠标等。
- 衍生该方法流行开来后,许多程序员纷纷效仿,由此诞生了Saber调试法(即使用Saber手办代替小黄鸭),初音调试法(即使用初音未来手办代替小黄鸭)等。例如以下代码//#include <iostream>//#include <bits/stdc++.h>//#define INF 0x3f3f3f3f//using namespace std;//set<pair<int,int> >s;//bool cmp(const pair<int,int>&a,const pair<int,int>&b)//{// return a.first<b.first;//}//int main()//{// for(int i=1;i<=25;i++)// s.insert(make_pair(INF,i));// pair<int,int>xx;// while(s.size()>=5)// {// vector<pair<int,int> >temp;
- // for(int i=0;i<5;i++)// {// temp.push_back(*s.begin());// printf("%d ",s.begin()->second);// s.erase(s.begin());// }// printf("\n");// fflush(stdout);// for(int i=0;i<5;i++)// {// scanf("%d",&temp[i].first);// }// sort(temp.begin(),temp.end(),cmp);// s.insert(temp[0]);// s.insert(temp[1]);// xx=temp[2];// }// vector<pair<int,int> >temp;// for(int i=0;i<4;i++)// {
- // temp.push_back(*s.begin());// printf("%d ",s.begin()->second);// s.erase(s.begin());// }// printf("%d\n",xx.second);// fflush(stdout);// temp.push_back(xx);// for(int i=0;i<5;i++)// {// scanf("%d",&temp[i].first);// }// sort(temp.begin(),temp.end(),cmp);// printf("%d %d 0 0 0\n",temp[0].second,temp[1].second);// fflush(stdout);// return 0;//}#include <bits/stdc++.h>
- using namespace std;int main(){int ans1 = 1, ans2 = 2;int a[6][6];int b[6][6];int c[6];int cnt = 1;map<int, int> m;for(int i = 1; i <= 5; i ++){for(int j = 1; j <= 5; j ++){a[i][j] = cnt++;m[a[i][j]] = i;//printf("%d%c", a[i][j], j==5?'\n':' ');}//fflush(stdout);//cout<<flush;for(int j = 1; j <= 5; j ++){
- int x=0; //scanf("%d", &x);b[i][x] = a[i][j];}}for(int i = 1; i <= 5; i ++){//printf("%d%c", b[i][1], i==5?'\n':' ');}fflush(stdout);cout<<flush;for(int i = 1; i <= 5; i ++){int x=0; //scanf("%d", &x);c[x] = b[i][1];}//µÚ¶þÂÖset<int> v;vector<int> s;v.insert(c[1]);
- v.insert(c[2]);v.insert(b[m[c[1]]][2]);v.insert(b[m[c[2]]][2]);for(int i = 1; i <= 25; i ++){v.insert(i);if(v.size() == 5) break;}set<int> :: iterator it = v.begin();while(it != v.end()){//cout<<*it;s.push_back(*it);it ++;//if(it == v.end()) cout<<endl;//else printf(" ");}fflush(stdout);cout<<flush;
- for(int i = 1; i <= 5; i ++){int x=0;//scanf("%d", &x);c[x] = s[i-1];}printf("%c %c %c %c %c %c %c\n", 53,50,48,49,51,49,52);//fflush(stdout);//cout<<flush;return 0;}很明显,通过小黄鸭调试法可知代码完全正确没有漏洞。由此可以看出,小黄鸭调试法的效率非常的高,比起传统的调试方法可以高出30倍甚至以上。参考资料The Pragmatic Programmer: From Journeyman to Master. Addison Wesley. ISBN 978-0201616224. p. 95, footnote.
- Baker, SJ, The Contribution of the Cardboard Cutout Dog to Software Reliability and Maintainability.