混蛋的面试题——《大话设计模式》读后感

【公司面试题】

“请用C++、Java、C#或VB.NET 任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。

【小菜的第二个答案】

class Program

{

    static void Main(string[] args)

    {

        try

        {

            Console.Write("请输入数字A:");

            string strNumberA = Console.ReadLine();

            Console.Write("请选择运算符号(+、-、*、/):");

            string strOperate = Console.ReadLine();

            Console.Write("请输入数字B:");

            string strNumberB = Console.ReadLine();

            string strResult = "";

            switch (strOperate)

            {

                case "+":

                    strResult = Convert.ToString(Convert.ToDouble(strNumberA) + Convert.ToDouble(strNumberB));

                    break;

                case "-":

                    strResult = Convert.ToString(Convert.ToDouble(strNumberA) - Convert.ToDouble(strNumberB));

                    break;

                case "*":

                    strResult = Convert.ToString(Convert.ToDouble(strNumberA) * Convert.ToDouble(strNumberB));

                    break;

                case "/":

                    if (strNumberB != "0")

                        strResult = Convert.ToString(Convert.ToDouble(strNumberA) / Convert.ToDouble(strNumberB));

                    else

                        strResult = "除数不能为0";

                    break;

            }

            Console.WriteLine("结果是:" + strResult);

            Console.ReadLine();

        }

        catch (Exception ex)

        {

            Console.WriteLine("您的输入有错:" + ex.Message);

        }

    }

}


【读后感】

昨天,群里有个程序员,与我彻底决裂了,因为,我又创造了一个新名词:程序结构...

我学汇编语言的时候,甚至在机器语言中也能看到,三个经典的程序结构:顺序结构、判断分支结构和循环结构。

N年过去了,再看现在的高级语言教程,讲的,还是这老三样...

编程,已经从以指令为单位、以中断服务程序为单位,发展到了以函数为单位,发展到了以类为单位,已经由只有一个段64K的.com程序,发展到了今天64M都不止的这么复杂的软件,程序结构,还是那老三样????

没有人追问控制台程序中那个main(){}是什么,没有人追问子程序是什么,没有人追问宏是什么,没有人追问多线程又是什么...

窃以为,这些,都是程序结构...
main(){}是一种程序结构;
子程序是一种程序结构;
宏是一种程序结构;
多线程是一种程序结构;
我们今天应用的数据访问层,也是一种程序结构;
我们将来应用的三层、工厂模式、策略模式...
也是一种程序结构!!

昨天,又看了一遍那个《大话设计模式》,看到开篇那个小菜,因为没有采用复杂的程序结构而提交的“不合格”的公司面试题目的答案,我为小菜感到悲哀,我为那个公司也感到悲哀...

你并没有要求我采用什么程序结构!!

当你没有明确要求人家用子程序、或者是宏、或者是复杂一点的三层、工厂、策略...,人家只要编写出来了,实现了你的要求,你就不能随便以你的意志,来彻底地否定人家(当然,基本的编程规范除外),你不能在没有明确你的思想的情况下,就要求人家遵循你的思想!!你这样做,不是在欺骗应试者,就是你公司的无知!!!!

如果把小菜换成是比尔,提交同样的答案(规范的那个),相信你一定会把这个答案,列为最标准的答案,给它一万分,并会振臂大吼一声,这就是你们公司倡导的最伟大的思想,这个思想,叫“够用刚刚好”!!
你们公司,一惯地倡导,以最少的代码,实现最伟大的功能,你们公司的软件产品由此而一惯是性能最好的,最优秀的!!!!

有兴趣的童鞋,可以找一找荣获 Mekka97 4K-Intro Compo奖项的程序作品(我群共享里也有),那么少的代码,实现那样的功能,我想,就是不能让你震惊,也应该让你有所触动吧...

当然,这里,我不得不特别声明,否则,我可能真的引初学者误入歧途的:
当你接到公司的面试程序,你看一下时间,以“够用刚刚好”(注意,这里的够用刚刚好,是时间够用)的思想,提交一个能最好地体现,也能最好的展现你所掌握的程序结构吧...

你可能感兴趣的:(设计模式)