Help me pick an API design (OO vs functional)
Michael Herrmann
michael.herrmann at getautoma.com
Tue Mar 26 05:38:01 EDT 2013
On Tuesday, March 26, 2013 12:40:45 AM UTC+1, Mitya Sirenef wrote:
> ...
>
> I think I would prefer context managers. I don't think it's a big
> problem for
> win users because this behaviour would be one of the first things documented
> in the start guide and would be all over example scripts, so a new user
> missing
> or forgetting it is not a realistic scenario.
>
> The advantages are that it's explicit, blocks are indented and it's
> impossible to
> miss which window is the action applied to, and at the same time actions are
> short and easy to type and read.
Thank you for your reply. What do you think of Chris Angelico's points?
He wrote:
> What happens at the __exit__ of the context manager? What happens if
> context managers are nested? I'd be inclined to the simpler option of
> an explicit switch (since focus doesn't really "stack" and it'd feel
> weird for focus to *sometimes* switch away when you're done working
> with one window), though the context manager syntax does have its
> advantages too.
What I am most afraid of: that the window that's currently the context "disappears":
notepad = start("Notepad")
with notepad:
press(ALT + TAB)
write("Am I in Notepad now?")
What do you think of designs #3 and #4?
notepad_1 = start("Notepad")
notepad_2 = start("Notepad")
switch_to(notepad_1)
write("Hello World!")
press(CTRL + 'a', CTRL + 'c')
switch_to(notepad_2)
press(CTRL + 'v')
notepad_1 = start("Notepad")
notepad_2 = start("Notepad")
notepad_1.activate()
write("Hello World!")
press(CTRL + 'a', CTRL + 'c')
notepad_2.activate()
press(CTRL + 'v')
I somehow prefer "activate" over "focus" as in my feeling, you'd normally say that you focus *on* something, so it should be called "focus_on" or "give_focus[_to]". Can you say, in everyday English, that you "focus a window"? I'm not a native speaker so maybe my feeling is misguided.
Thanks,
Michael
More information about the Python-list
mailing list