重要的編程課程調(diào)試建議
在2012年秋天,我走進(jìn)了我的研究生顧問辦公室,并問她推薦我參加哪個(gè)計(jì)算機(jī)科學(xué)課程。我解釋說我是一個(gè)完整的編程新手。她建議學(xué)習(xí)C編程。在參加一些講座后,我發(fā)現(xiàn)我在這個(gè)介紹性課程中發(fā)言的大多數(shù)學(xué)生都有一些先前的編程經(jīng)驗(yàn)。六周和80小時(shí)后,我退出了課程。
進(jìn)入2013年春季學(xué)期。我注冊了一個(gè)更輕松的計(jì)算機(jī)科學(xué)課程,通過網(wǎng)絡(luò)介紹了計(jì)算機(jī)編程。我通過課程的第一季度,執(zhí)行HTML和CSS,輕松執(zhí)行。然后,我們啟動(dòng)了JavaScript(JS)。我以前的計(jì)算機(jī)科學(xué)課程的持續(xù)焦慮和壓力的感覺以全面返回。在學(xué)期下降到太晚了,可以放棄課程,所以我要求一位朋友尋求幫助。
一天下午他通過我的JS代碼了解了我,并解釋了如何在這里和那里在這里添加一些代碼,以測試功能是否按預(yù)期工作。他向我展示了什么是一種非常基本的調(diào)試形式,識別和刪除計(jì)算機(jī)硬件或軟件的錯(cuò)誤的過程。他和我也不了解這60分鐘的輔導(dǎo)會(huì)議可能在我的職業(yè)軌跡上的影響?;仡櫼幌?,這不是我在計(jì)算機(jī)科學(xué)和技術(shù)中學(xué)到的最重要的課程。
如果您之前從未寫過任何代碼,請想象您的任務(wù)是繪制完美的鳥類。每次完成繪圖并將其轉(zhuǎn)向老師時(shí),老師都會(huì)立即決定是否是正確的或不正確的(即二元結(jié)果)。老師每次都沒有完美時(shí)會(huì)撕掉這篇論文。如果你問老師有什么問題,他們會(huì)以外語(即計(jì)算機(jī)錯(cuò)誤語言)向您解釋。最終,在老師幾十天的嘗試后,他們可能接受你的繪畫,你的分?jǐn)?shù)來自錯(cuò)誤糾正。讀過這個(gè)故事,你可能不會(huì)認(rèn)為我的下一個(gè)陳述是如此大膽。
學(xué)術(shù)界中的任何內(nèi)容都沒有測試您的耐心等能力,以承受不斷拒絕的能力,而不是學(xué)習(xí)編寫代碼。
學(xué)習(xí)代碼時(shí)唯一提供安慰的是,如果您了解調(diào)試的基本面?,F(xiàn)在,當(dāng)我畫一只鳥時(shí),如果喙看起來好,那么如果顏色是合適的,那么如果顏色是合適的,那么如果尺寸有意義的話,則會(huì)提供反饋。通過所有的反饋,您更有可能讓您的提交是正確的,而無需如此多的拒絕。
無論您是定期寫代碼,調(diào)試的基礎(chǔ)都非常有用。每當(dāng)您需要使用任何類型的軟件應(yīng)用程序或工具時(shí),它們都適用。根據(jù)我的技術(shù)經(jīng)驗(yàn),這是我最喜歡的各種軟件應(yīng)用程序和工具的調(diào)試技巧和技巧列表。
使用Web應(yīng)用程序
Web應(yīng)用程序是用戶通過Web瀏覽器訪問的計(jì)算機(jī)程序。常見的Web應(yīng)用程序是Facebook,Gmail和Salesforce。如果您使用Web應(yīng)用程序遇到問題,則通??梢允褂靡韵轮唤鉀Q問題:
- 嘗試一個(gè)不同的瀏覽器。各種功能可能無法在某些瀏覽器中使用
- 關(guān)閉插件。插件可以影響瀏覽器中的Web應(yīng)用程序
- 清除Web瀏覽器中的緩存
- 重新啟動(dòng)Web應(yīng)用程序
- 檢查問題是否特定于您的應(yīng)用程序版本。
- 確認(rèn)您擁有的安全角色。某些功能可能不可見,因?yàn)槟鷽]有權(quán)限。
- 重啟你的電腦
導(dǎo)入數(shù)據(jù)文件
將數(shù)據(jù)文件(例如XLS,CSV,PDF等)導(dǎo)入Web應(yīng)用程序或在一段代碼中是一個(gè)常見任務(wù)。常見問題往往與以下相關(guān)關(guān)系:
- 檢查列名稱引用是否正確。它們可能是區(qū)分大小寫的。
- 刪除無法識別的任何字符。嘗試在UTF-8,UTF-16或ASCII中編碼文件。
- 注意正在剝離領(lǐng)先的零和/或領(lǐng)先的零。檢查數(shù)據(jù)類型,無論是字符串,float還是整數(shù)。
- 從數(shù)據(jù)中刪除前導(dǎo)和尾隨空格
- 檢查文件是正確的文件類型(例如,XLS,CSV,PDF,JPG)
- 確認(rèn)列中的所有值都在接受的規(guī)則中。某些列需要某些數(shù)據(jù)類型(例如,字符串,整數(shù)等)和/或它們可能需要在受控列表中存在該值(例如,“紅色”和“藍(lán)色”在顏色列下接受)
- 在導(dǎo)入之前刪除任何空行
- 導(dǎo)入后的電子郵件通知可能會(huì)發(fā)送到您的垃圾郵件文件夾
所有編程語言
- 檢查整個(gè)腳本中的變量值,以查看它們是如何改變的
- 在函數(shù)中打印出文本,以測試是否在執(zhí)行它們時(shí)
- 使用集成的開發(fā)環(huán)境(IDE)
- 在您的代碼中使用大量評論
- stackoverflow和谷歌是你的朋友
- 檢查您正在使用的編程語言或庫的哪個(gè)版本。在版本之間可以大大改變。
- 將冗長的代碼分解為更短的片段。例如,而不是用巨型JSON字符串測試代碼,而是嘗試在小子集上測試它。更好的是,創(chuàng)建自己的mini-json字符串來測試事物。
- 為每行代碼逐步記下計(jì)算機(jī)的操作。Python導(dǎo)師提供了一個(gè)偉大的視覺,逐行瀏覽代碼執(zhí)行行。Web工具適用于Python,JavaScript,Java,C和C ++。
- 檢查有人是否為您的特定用例創(chuàng)建了一個(gè)包,可以讓生活更輕松。例如,Pandas中的操縱數(shù)據(jù)比使用本機(jī)Python更容易。
在JavaScript中編程
- 在函數(shù)中使用console.log()打印文本或變量值來測試它們是否在腳本中執(zhí)行
- 經(jīng)常清除瀏覽器緩存
- 嘗試不同的Web瀏覽器 - 插件可以干擾代碼
- 升級您的Web瀏覽器 - 可能無法支持舊版本
在Python中編程
- 對象名稱區(qū)分大小寫(例如,“變量_Name”與“變量_Name”不同)
- 密切關(guān)注錯(cuò)誤消息。他們通常解釋這個(gè)問題開始的行號。
- 檢查它是一個(gè)python v2與python v3更改
- Python有很棒的文檔
在SQL中編程
- 測試腳本時(shí),利用限制(limit)獲得更快的性能
- 檢查是否存在特殊的語法規(guī)則或限制由于您正在使用的SQL數(shù)據(jù)庫。例如,MySQL使用#開始注釋行,而PostgreSQL使用 - 用于注釋
- 不要將表格或可變的1個(gè)保留字命名
- 通過在Excel中的數(shù)據(jù)子集上復(fù)制預(yù)期的操作,確認(rèn)輸出表是正確的。
最重要的調(diào)試建議
當(dāng)它來學(xué)習(xí)計(jì)算機(jī)科學(xué)和編程時(shí),我希望我的教授強(qiáng)調(diào)了學(xué)習(xí)調(diào)試代碼的重要性。我希望我的提示和技巧可以減少寫作代碼時(shí)的焦慮和挫折。哦,我挽救了最后的建議。
如果您無法解決問題,請睡在其上并稍后返回。
嚴(yán)重地。壓力較少,新的透視可以幫助您在幾分鐘內(nèi)識別解決方案,而您在前一天花費(fèi)的時(shí)間。此建議再次為我和時(shí)間支付利息。前一天,我在JS腳本上度過了5個(gè)小時(shí)。幾天后,我回到了問題,快速了解到,當(dāng)我重新打開瀏覽器時(shí),這是一個(gè)緩存問題。當(dāng)沒有時(shí)間的時(shí)候,這個(gè)建議不起作用。小心,拖延者!
原文鏈接:
https://towardsdatascience.com/the-most-important-programming-lesson-62467a9a4150