封装很重要,英语也是

Posted on Mon 02 May 2022 in Journal

封装是 OOP 中最重要的特性

OOP 面向对象编程中常常提到封装,继承和多态,在我看来,最重要就是封装。

世界是复杂的,做一个产品,一个项目同样会面临许多复杂琐碎的问题,这时候就需要分解和抽象。 用包,模块,类,函数帮助我们把一团乱麻的方法分门别类地归置起来。 把复杂的逻辑封装在内部,开放简单的接口来外部使用。

比如我会用洗衣机,我对洗衣机的接口和用法很清楚 --> 封装和面向接口编程的重要性

  • 0)接上电源和自来水
  • 1)打开门
  • 2)放入洗衣液
  • 3)放入衣服
  • 4)按启动按钮

我大致了解洗衣机的工作原理,但不了解洗衣机的内部构造,洗衣机坏了我也不会修, 但是我不妨碍我天天用它。

用 Python 写一个小例子,接口很简单,所以很容易使用,繁琐的线程,加锁全部封装在内部,这就是封装的价值。

#!/usr/bin/env python3

import time
import threading


class Machine(object):
    def __init__(self, executor = None):
        self._started = False
        self._thread = None
        self._lock = threading.Lock()
        self._executor = executor

    def is_started(self):
        with self._lock:
            return self._started

    def start(self, duration):
        with self._lock:
            self._started = True
        self._thread = threading.Thread(target=Machine.run, args=(self, duration))
        self._thread.start()

    def run(self, duration):
        begin_time = time.time()
        while self.is_started() and time.time() - begin_time <= duration:
            local_time = time.localtime()
            self._executor(local_time)
            time.sleep(1)


    def stop(self):
        with self._lock:
            self._started = False
        self._thread.join()

if __name__ == '__main__':
    machine = Machine(lambda local_time : print("Laundry service at {}".format(time.strftime("%H:%M:%S", local_time))))
    machine.start(5)
    time.sleep(3)
    machine.stop()
  • 运行结果
./Machine.py
Laundry service at 10:59:32
Laundry service at 10:59:33
Laundry service at 10:59:34

15 种改进电子邮件写作的方式

来自赖世雄所著 "Teach You to Write Business E-mails"

  1. Make Your Reader The First Priority 把读者放在首位
  2. Write a Good Subject Line 写好标题
  3. Use a Standard Greeting 使用标准问候语
  4. Specify Who You Are and Why You Are Writing 表明身份和来信理由
  5. Don't Make People Try to Read Your Mind 不要让人去猜测你的想法
  6. Avoid Long, Rambling Message 避免冗长含糊的讯息
  7. Choose Between Formal and Casual 在正式与非正式间做出正确的选择
  8. Copy and Paster If You Can 尽量使用复制粘贴,少用附件
  9. Take the Time to Proofread 要花时间进行校对
  10. Watch What You Write 小心你所写的内容
  11. Respect People's Privacy 尊重他人的隐私
  12. Be Careful with Those Button 小心那些按键,尤其是发送给所有人
  13. Don't Forget to Reply Without Delay 别忘了要迅速回复
  14. Don't Write Anything You Will Regret Later 不要写下任何会让你后悔的文字
  15. Manners Matter 礼仪和态度很重要