Help me pick an API design (OO vs functional)

Michael Herrmann michael.herrmann at getautoma.com
Tue Mar 26 10:38:01 CET 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