腦洞大開,他將1行代碼寫成了上千行,怎麼做到的?

程序員在接收到這樣一個編程題目,請通過代碼實現,打印出一個 “hello world”!

正要對出題者說,搞定!但是話又咽了回去,心想,我作為一個多年的程序員,他應該不會出這麼簡單的題,於是乎他又想了想,我怎麼能用php呢,php這麼沒品位的語言。

腦洞大開,他將1行代碼寫成了上千行,怎麼做到的?

圖片來之互聯網

於是乎這個程序員又以熟練的動作創建了一個java文件,簡單創建一個類,寫了一個main方法,然後在main方法裡寫了一句System.out.println("hello world"); 編譯,運行,控制檯出現了一個hello world. 好了,他一拍手,準備告訴出題者說大功告成了,可是他又遲疑了,不應該,還是挺簡單的,他不應該只考察我這些東西,應該考察我更復雜的,我再想想吧!

於是這個程序員又想了5分鐘,突然一拍手,我說嘛,不應該這麼簡單,出題者應該是看我代碼規範吧,先把代碼縮進給調整一下吧,然後通過快捷鍵把代碼格式化了一下,顯的非常工整。接下來程序員又加了一個方法註釋與類註釋,對,還有一個非常重要的一點,作為一個多年的程序員,我怎麼能將變量從代碼寫死呢,這次讓我打印hello word,說不定下次讓我打印其它的,於是這個程序員又創建了一個xml配置文件,將hello world配置進文件。 然後在main方法裡讀取xml,取到hello word,並打印了出來。這時他準備告訴出題者完成了,瞬間一個靈感來了,不對,這個東西還不完美,程序的執行怎麼能沒運行日誌呢。

於是乎這個程序員馬上在代碼裡迅速吧記日誌的代碼給加上,再次,編譯,運行,後臺成功的打印出了hello word,並且成功的生成了一個日誌文件,打開日誌文件看了一下,日誌文件準確描述了日誌產生的時間及程序所做的事情,OK,這下總算是大功告成了吧,完美!準備告訴出題者了!

就在剛想說的時候,程序員似乎又想到了什麼,對了,這些代碼我怎麼能混在一塊寫呢,顯然是分工不明確呀,比如說專門解析XML那塊我是不是要創建一個類呀,記錄日誌那塊我是不是也要創建一個類,將他們的職能分離出來才行啊,於是乎這個程序員迅速創建了兩個文件,XmlReader.java,LogManager.java,並將解析xml的代碼與生成日誌的代碼從main方法裡提取出來放到了這2個文件裡去,並寫好了註釋,代碼做好了格式化的處理。編譯,運行,沒問題,然後準備說搞定了,突然這個程序員好像是又想到了什麼事情。

他覺得既然是一個項目怎麼能沒有數據庫呢,這不科學,也許出題人是想考察他怎麼從數據庫裡取到數據並打印出來呢,於是乎這個程序員想了想,馬上寫了一個數據庫連接的工具類,創建了一個數據庫表,並設計了相應的字段,對原來的xml配置文件進行了改造,裡面有一個配置,是從數據庫讀取還是從xml文件讀取。然後對java文件也進行了一次調整,編譯運行, 並且修改xml文件分別改配置項從xml取數據與數據庫取數據,都能成功打印出hello word!這時程序員有點滿意了,覺得自己做的相當不錯了,出題者也應該會非常滿意,於是乎準備去告訴出題者,可是這時他突然又想到了些什麼。。。。

這個程序員突然想到,假如我的這個程序同時有很多個進程同時訪問,並且達到一定的量級,數據庫也支撐不了該怎麼辦呀,他想了想,對了,應該在讀取數據庫時從中間做一層緩存,這樣比較靠譜點,於是這個程序員又創建了一個java文件 CacheManage.java對redis進行了一個封裝,在電腦上裝了一個redis服務,通過調試成功連接到redis服務,把原來連接數據庫的邏輯改成先從redis讀,如果讀取不到再從數據庫讀,並且這個程序員還用了一張紙畫了一個草圖,整個過程顯得老用心了,做了一個項目,感覺很有成就感!

腦洞大開,他將1行代碼寫成了上千行,怎麼做到的?

這出題者過來了,我出的這個題不難吧,這麼長時間了,請問有什麼需要幫助嗎?程序員說,好了,搞定了,並且運行給出題者看,並把畫的草圖給出題者看。

腦洞大開,他將1行代碼寫成了上千行,怎麼做到的?

你覺得這個程序員怎麼樣哈,我有一個問題,這中間一直是這個程序員自己的內心世界自己與自己交流,他為什麼不與出題者多溝通一下呀,這樣豈不是更能明白出題者的意圖,何必這麼費事呀,大家怎麼看呢?

大家好,我是“上世是朵花”。如果你有什麼好的看法或者觀點可以在評論區展現你的才華,互動交流,如果想進一步瞭解我,那就關注我吧!


分享到:


相關文章: