設(shè)計(jì)師學(xué)編程滞伟?從五個(gè)思維訓(xùn)練開(kāi)始

編程語(yǔ)言雖說(shuō)跟自然語(yǔ)言類似揭鳞,但有一些本質(zhì)的區(qū)別炕贵,如果不理解這些區(qū)別梆奈,編程的檻始終過(guò)不去。這篇文章嘗試把幾個(gè)最要緊的概念提取出來(lái)咀嚼消化称开。

一亩钟、變量 vs 替身

例如:想要寫個(gè)程序乓梨,實(shí)現(xiàn):周一至至周日顯示不同的早餐菜單蝇闭。

我們需要有一個(gè)東西來(lái)代表“今天是周幾”。可能性有 7 種辱志,但是活在當(dāng)下的只有 1 個(gè)揩懒,于是需要一個(gè)“替身”已球,框定它的“變身”范圍是周一至周日智亮,然后讓它根據(jù)條件變變變……

這是對(duì)編程思維的第一個(gè)訓(xùn)練:【抽象】將某種類型鸽素、某個(gè)范圍內(nèi)變化的“實(shí)例”,抽象為一個(gè)“代號(hào)”棒坏。

坑:

  • 變量命名

    大媽在上周的 QA 里面提過(guò)坝冕,這幾乎是一個(gè)終極問(wèn)題…… 我的理解是喂窟,這個(gè)命名同時(shí)承載了占位符央串、運(yùn)算對(duì)象质和、功能解釋、類型暗示厦酬、作用域暗示 等等的使命,于是短了燒腦昌讲,長(zhǎng)了燒眼……

  • 理解成本

    雖然程序是自己寫的短绸,變量是自己命名的鸠按,但是每一次回看程序時(shí)饶碘,都存在“翻譯”變量名的隱性步驟扎运,這個(gè)步驟消耗了很多認(rèn)知資源,相當(dāng)于腦子里面得有很多對(duì)牽線木偶洞拨,運(yùn)行前是一個(gè)烦衣,運(yùn)行后是另一個(gè)……相信這是老手感受不到/回憶不起的一種狀態(tài)花吟。尤其當(dāng)程序長(zhǎng)了以后衅澈,變量越來(lái)越多今布,記憶變量和管理變量都成問(wèn)題部默,還容易犯看錯(cuò)變量名的錯(cuò)誤造虎。

填坑:

  • 定義函數(shù)時(shí)想想丫的用途和變化范圍累奈,加注釋
  • 避免用三個(gè)字母以內(nèi)的命名澎媒,使用一個(gè)月后再來(lái)仍然能快速理解的命名
  • 變量多的話戒努,分一下組,或者動(dòng)手畫一下它們的關(guān)系幫助理清思路

二侍筛、數(shù)組 vs 分格抽屜

替身雖好匣椰,但是有時(shí)候還是不好管理禽笑,執(zhí)行命令起來(lái)效率有點(diǎn)兒低佳镜,因?yàn)橥|(zhì)性不夠高(雖然替身都是人凡桥,但可能年齡、愛(ài)好啊掏、性取向衰猛、左撇右撇小泉、甜豆花派咸豆花派等等都不盡相同)微姊、以及沒(méi)有按順序排列分预。

于是我們需要一個(gè)更“軍事化”的組織——數(shù)組笼痹。數(shù)組就像一個(gè)分格抽屜:



從外面看來(lái),一個(gè)抽屜就是一個(gè)東西(里面能裝很多東西)被济;打開(kāi)抽屜只磷,里面是按照順序放置的同一類東西钮追,每一格都有位置編號(hào)(指針)元媚。

這是對(duì)編程思維的第二個(gè)訓(xùn)練:【壓縮】對(duì)同樣的東西惠毁,折疊再折疊鞠绰,收納再收納蜈膨。

坑:

  • 抽象

    因?yàn)槌橄笪涛。菀滓?jiàn)抽屜而不見(jiàn)格子灶壶。寫下數(shù)組太輕松 array[] 驰凛,但是一旦加入到運(yùn)算中(尤其是循環(huán))担扑,腦內(nèi)演化就容易一團(tuán)漿糊。

  • 抽屜里面的抽屜

    復(fù)雜性上升一維胚宦,需要先辨別是哪個(gè)抽屜井联,然后再定位到抽屜內(nèi)的單元烙常。

    小抽屜為大抽屜增加了多樣性轮蜕,一個(gè)抽屜放馬卡龍跃洛,一個(gè)放銅鑼燒葱蝗,一個(gè)放...益力多…………

    至于N維數(shù)組……

填坑:

  • 克服對(duì)數(shù)組的心理恐懼,多使用這么簡(jiǎn)潔高效的工具玻驻,嗯
  • 為對(duì)抗數(shù)組高濃縮占位符的假象璧瞬,見(jiàn)到數(shù)組自動(dòng)腦補(bǔ)幾個(gè)空行給它
  • 對(duì)循環(huán)語(yǔ)句中的數(shù)組尤其警惕渔欢,試著畫一畫奥额?

數(shù)組一直是我的檻披坏,回頭需要再補(bǔ)看視頻和笨方法棒拂,專門寫寫數(shù)組的筆記谜诫。

三、判斷+循環(huán) vs 防偽點(diǎn)鈔機(jī)

嗯且预?點(diǎn)鈔機(jī)烙无?

點(diǎn)鈔機(jī)工作特點(diǎn):根據(jù)設(shè)定的條件锋谐,重復(fù)同一步驟。這正是 “判斷+循環(huán)”的精髓截酷。感謝它將我們從機(jī)械勞動(dòng)中解放出來(lái)涮拗。

下面的代碼雖然只有幾行,但是綜合了變量迂苛、運(yùn)算三热、循環(huán)判斷、數(shù)組等等三幻,濃縮是濃縮就漾,坑也很多……

for shapes in shape_list:
    if shapes[1] == "circle":
        canvas.draw_circle(shapes[0],Radius, 1, "Black",shapes[2])
    else:
        canvas.draw_polygon(shapes[0], 1, "Black",shapes[2])

以上對(duì)編程思維的第三個(gè)訓(xùn)練:【自動(dòng)化】找出條件,識(shí)別共同步驟念搬,循環(huán)處理锁蠕,實(shí)現(xiàn)量變到質(zhì)變。

坑:

  • 抽象
    循環(huán)里面如果有個(gè)函數(shù)調(diào)用,再來(lái)個(gè)二維數(shù)組灌曙,腦子馬上就漿糊了

填坑:

四赔嚎、函數(shù) vs 百寶袋

每個(gè)函數(shù)结缚,都是哆啦A夢(mèng)百寶袋里面的一件寶物!

寶物的特點(diǎn)是什么暖哨?實(shí)現(xiàn)大雄的一個(gè)愿望。至于怎么實(shí)現(xiàn)的,大雄并不用擔(dān)心。當(dāng)然圾另,想實(shí)現(xiàn)多個(gè)愿望坡椒,最好不要指望于一件寶物丈攒,那樣往往會(huì)出bug……

說(shuō)回最開(kāi)始一周早餐菜單的例子显设。要 print 不同的菜單指攒,我們需要先判斷今天是周幾猿挚,這件事可以寫到一個(gè)函數(shù) whatIsTheDay() 中办绝。以后一旦要做這件事,就 call 一下這個(gè)函數(shù)霍殴,外包這項(xiàng)任務(wù)給它,自己就翹著二郎腿等著它給出結(jié)果。一個(gè)程序中有多個(gè)函數(shù)但壮,也就成了一個(gè)百寶袋舞肆。

函數(shù)的強(qiáng)大之處還在于狈醉,可以通過(guò)參數(shù)實(shí)現(xiàn)定制化需求摇庙。比如我們?cè)诤瘮?shù) whatIsTheDay(year,month,date) 加入三個(gè)參數(shù) year 、month 和 date 转砖,告訴函數(shù):“我想知道 某年汞窗、某月劳坑、某日 是周幾 ”

以上是對(duì)編程思維的第四個(gè)訓(xùn)練:【模塊化】分產(chǎn)承包析珊,責(zé)任到戶存和;結(jié)果導(dǎo)向操软,過(guò)程自理耀找。

坑:

  • 貴圈太亂

    函數(shù)的調(diào)用關(guān)系復(fù)雜乱投,你調(diào)我,它調(diào)你顷编,你調(diào)你自己……

  • 參數(shù)傳遞和返回結(jié)果

    參數(shù)傳遞引入了新變量(認(rèn)知內(nèi)存中又要處理多一套對(duì)應(yīng)關(guān)系 >_<)戚炫,容易跟全局變量、函數(shù)內(nèi)的局部變量混淆媳纬。而返回結(jié)果又是一個(gè)隱式的變量双肤,不可見(jiàn)但影響重大施掏。

  • 交叉并行路徑

    如果只有一個(gè)明確起點(diǎn),調(diào)用關(guān)系也單純的程序就很好辦茅糜。但事實(shí)往往是有多個(gè)起點(diǎn)入口七芭,調(diào)用關(guān)系也復(fù)雜,偏偏程序是線性寫下來(lái)的蔑赘,不能按照從頭到尾的順序去讀狸驳。于是到底程序從哪里開(kāi)始,zeng 地躥到了哪里缩赛,很讓人頭疼……

  • 自定義函數(shù)和內(nèi)置函數(shù)

    內(nèi)置函數(shù)的說(shuō)法不對(duì)耙箍,因?yàn)槟菚r(shí)還沒(méi)有了解類,所以覺(jué)得類似frame.start()這種東西從哪來(lái)的酥馍,就把丫們看成內(nèi)置函數(shù)辩昆。因?yàn)檠緜儾皇亲约河H生的,所以經(jīng)常覺(jué)得陌生旨袒,尤其搞不清楚丫們之間的關(guān)系卤材。

填坑:

  • 明確函數(shù)功能,加注釋
  • 牢記函數(shù)的輸入(函數(shù)參數(shù))和輸出(返回值)
  • 多進(jìn)行局部調(diào)試峦失,print 函數(shù)返回值
  • 函數(shù)之間的調(diào)用關(guān)系扇丛,通過(guò)可視化幫助理解

五、類 vs 招聘職位

每一個(gè)類都包含屬性(變量和值)和行為(函數(shù))尉辑。對(duì)比一下:

JD(招聘職位描述):

WXG01-微信高級(jí)交互設(shè)計(jì)師(廣州)

工作職責(zé):

- 參與微信相關(guān)產(chǎn)品從概念到原型的設(shè)計(jì)過(guò)程帆精,輸出相關(guān)設(shè)計(jì)文檔;
- 對(duì)產(chǎn)品持續(xù)進(jìn)行設(shè)計(jì)優(yōu)化隧魄,提升用戶體驗(yàn)卓练;
- 協(xié)調(diào)和推動(dòng)可用性測(cè)試及用戶研究,以驗(yàn)證現(xiàn)有和將來(lái)的功能設(shè)計(jì)购啄;
- 負(fù)責(zé)設(shè)計(jì)前瞻性的相關(guān)研究襟企。

工作要求:

- 工業(yè)設(shè)計(jì)、心理學(xué)狮含、計(jì)算機(jī)顽悼、視覺(jué)傳達(dá)相關(guān)背景,本科及以上學(xué)歷几迄;
- 3年以上工作經(jīng)驗(yàn)蔚龙,主導(dǎo)過(guò)1000萬(wàn)+用戶的移動(dòng)互聯(lián)網(wǎng)產(chǎn)品的設(shè)計(jì),具備多領(lǐng)域設(shè)計(jì)工作相關(guān)經(jīng)驗(yàn)映胁,如產(chǎn)品設(shè)計(jì)木羹、硬件設(shè)計(jì)、視覺(jué)設(shè)計(jì)等解孙;
- 對(duì)互聯(lián)網(wǎng)交互設(shè)計(jì)有深刻理解坑填,具備完整的理論和技術(shù)體系抛人;
- 優(yōu)秀的產(chǎn)品意識(shí),良好的全局觀脐瑰、前瞻性和判斷力函匕;
- 同理心強(qiáng)烈,擅長(zhǎng)換位及獨(dú)立思考蚪黑,卓越的情景還原能力盅惜;
- 優(yōu)秀的溝通、組織和項(xiàng)目管理能力忌穿;
- 性格樂(lè)觀向上抒寂,興趣愛(ài)好廣泛。

類:

class Character:
   def __init__(self, name, initial_health):   # __int__ 初始化對(duì)象
       self.name = name                 # self 是新的對(duì)象的引用
       self.health = initial_health # name 和 health 是self對(duì)象中的域(field)
       self.inventory = []
       
   def __str__(self):
       s  = "Name: " + self.name
       s += " Health: " + str(self.health)
       s += " Inventory: " + str(self.inventory)
       return s
   
   def grab(self, item):            # methond defines the behaviors of objects
       self.inventory.append(item)
       
   def get_health(self):            # method 所有方法的第一個(gè)參數(shù)都是self
       return self.health

工作要求其實(shí)就相當(dāng)于類的“屬性”掠剑,作為這類人屈芜,本身需要具備什么樣的條件和素質(zhì);工作職責(zé)相當(dāng)于類的“行為”朴译,這類人要干什么事情井佑。

類和函數(shù)的區(qū)別在于,類只能操作某個(gè)類型的對(duì)象眠寿,而不能通過(guò)其他方法直接被調(diào)用躬翁。

面向?qū)ο缶幊痰膹?qiáng)大之處,對(duì)于一個(gè)類盯拱,理解其接口和已實(shí)現(xiàn)的方法盒发,就可以使用了。

**這是對(duì)編程思維的第五個(gè)訓(xùn)練:【面向?qū)ο蟆浚捍虬尚徒品辏庋b上架 **

坑:還沒(méi)有真正練習(xí)過(guò) 囧宁舰,待踩。

今天先到這~ 可能有很多不恰當(dāng)?shù)念悇e奢浑,請(qǐng)各位程序猿輕拍~


00的公眾號(hào)蛮艰,更多分享醞釀中……
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雀彼,隨后出現(xiàn)的幾起案子壤蚜,更是在濱河造成了極大的恐慌,老刑警劉巖详羡,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仍律,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡实柠,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門善涨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)窒盐,“玉大人草则,你說(shuō)我怎么就攤上這事⌒防欤” “怎么了炕横?”我有些...
    開(kāi)封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)葡粒。 經(jīng)常有香客問(wèn)我份殿,道長(zhǎng),這世上最難降的妖魔是什么嗽交? 我笑而不...
    開(kāi)封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任卿嘲,我火速辦了婚禮,結(jié)果婚禮上夫壁,老公的妹妹穿的比我還像新娘拾枣。我一直安慰自己,他們只是感情好盒让,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布梅肤。 她就那樣靜靜地躺著,像睡著了一般邑茄。 火紅的嫁衣襯著肌膚如雪姨蝴。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天肺缕,我揣著相機(jī)與錄音似扔,去河邊找鬼。 笑死搓谆,一個(gè)胖子當(dāng)著我的面吹牛炒辉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泉手,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼黔寇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了斩萌?” 一聲冷哼從身側(cè)響起缝裤,我...
    開(kāi)封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎颊郎,沒(méi)想到半個(gè)月后憋飞,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡姆吭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年榛做,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡检眯,死狀恐怖厘擂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锰瘸,我是刑警寧澤刽严,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站避凝,受9級(jí)特大地震影響舞萄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜管削,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一倒脓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧佩谣,春花似錦把还、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至调鬓,卻和暖如春艇炎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背腾窝。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工缀踪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人虹脯。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓驴娃,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親循集。 傳聞我的和親對(duì)象是個(gè)殘疾皇子唇敞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,302評(píng)論 25 707
  • 思念就像死亡: 突然其來(lái), 不容置疑咒彤, 并不讓人愉快疆柔, 卻算不得一種病。
    郭綠獅閱讀 182評(píng)論 0 1
  • 回想這一周吧,我關(guān)注最多的就是心理學(xué)歇拆,精神病鞋屈,量子論范咨,百慕大三角這類比較神秘的東西。當(dāng)然谐区,這一切都要從那本《天才在...
    Vitawen閱讀 327評(píng)論 0 2