Op maandag 9 juli 2012 14:54:03 UTC+2 schreef Jean-Michel Pichavant het 
volgende:
> Kruptein wrote:
> > Op maandag 9 juli 2012 13:05:58 UTC+2 schreef Jean-Michel Pichavant het 
> > volgende:
> >   
> >> Kruptein wrote:
> >>     
> >>> Hey I released a new version of my python-focused text-editor.
> >>> you can download it at http://launchpad.net/deditor
> >>>
> >>> What is it?
> >>> Deditor is aimed to be a text-editor which can be used as a basic 
> >>> text-editor as gedit or with the right plugins become a full-feature ide.
> >>> I focus on making it a python specific editor but you can use it to edit 
> >>> other files as well.
> >>> It is python specific because the plugin system that is used (DPlug) is 
> >>> written in python and thus all plugins are written in python.  Also some 
> >>> of the plugins there is one plugin that comes bundled with deditor that 
> >>> adds some python specific features like code-analyzing, code-inspection, 
> >>> auto-completion etc.
> >>>
> >>> So plugins are the main core of the program you can disable and enable 
> >>> plugins at your will.  The plugins that come bundled are made to increase 
> >>> the joy of programming.
> >>>
> >>> NOTICE that this I don't regard this as a stable product yet.  There is 
> >>> no high risk in data loss and there are definitely no privacy concerns 
> >>> but you should still be aware that there are bugs/malfunctions and that 
> >>> you will encounter them.
> >>>
> >>> I hope some of you like it and if you don't try to give some constructive 
> >>> criticism :)
> >>>
> >>>
> >>> Most changes in regard to previous release are under the hood.  so 
> >>> existing users might not notice a lot.
> >>> Also the customize plugin's second configuration tab: syntax highlighting 
> >>> is bugged try to avoid it :p
> >>>   
> >>>       
> >> Good job.
> >>
> >> I have 2 question:
> >> Aren't you reinventing the wheel ?
> >> No way to use tabs for tabulation ??? (I'm CEO of the 'space haters club')
> >>
> >> Otherwise, I found this bug :
> >> Start the editor, click twice on 'Analyse code', and you'll get a 
> >> traceback.
> >> I looked into the related code:
> >>
> >> def dUpdate(self, trig, value=None):
> >>     if trig == "tabclosed":
> >>         return self.tabClosed(value)
> >>
> >> def tabClosed(self, tab):
> >>     """Checks if the tab that is closing is a project"""
> >>         if tab.parentTab == None:
> >>             pass
> >>
> >>
> >> Your method interfaces are quite inconsistent, I sense this is quite 
> >> global to your code:
> >>
> >> 1/ dUpdate has None as default value for 'value'
> >> 2/ tab.parentTab will fail if tab is None
> >> 3/ on the traceback you get from the bug above, a bool has been given, 
> >> bool has no parentTab.
> >>
> >>
> >> Here are 2 advices:
> >>
> >> 1/ Default values are for the fool/weak/noob/..., your pick. I tend to 
> >> use them only for backward compatibilty or for interface stability. 
> >> Otherwise, it's better not to use them. Some people still use them 
> >> appropriately but in your I think it may help.
> >>
> >> 2/ In your docstrings, note down the expected type of your parameters 
> >> (only 1 type ! (except for the None alternative)) and stick to it.
> >>
> >> Regards,
> >>
> >> JM
> >>     
> >
> > To begin with not everything that I want to see is yet implemented.  A lot 
> > still has to be done for example indentation although I really hate tabs ;D 
> > I will give the option in a future release maybe even the next one.
> >
> > I'll check the bug as it probably is indeed a bug.
> >
> > Regarding the default value dUpdate is a method from the plugin system and 
> > is called when a trigger is updated.  some triggers give an additional 
> > value for example a trigger that registers pressed buttons could 
> > potentially give which exact key as value.  However some triggers don't 
> > need this additional value.  If a plugin needs both types of triggers the 
> > method will need this default value to work.  Also the dev version already 
> > changed that there always will be sent a value so no need for the default 
> > value anymore.
> >
> >   
> If you can, use the **kwargs syntax.
> def foo(tabs, **kwargs):
>     # optional arg
>     if kwargs.get('saveFile', False):
>        self.saveFile(tab.file)
>     # required arg
>     if kwargs['saveFile']:
>         self.saveFile()
>    
> 
> The type of kwargs will be consistent, it will be always a dictionnary, 
> possibly an empty one, but still a dictionnary, and best part of it, if 
> you change the number of argument in the call, you don't break your 
> interface.
> 
> > Regarding the docstrings: as deditor still is under heavy development not 
> > all docstrings are correct or even there.
> >
> >   
> Yep, but writing the expected type of your parameters always help, in 
> particular during the dev phase. you can save the verbose part of the 
> documentation for later.
> 
> Cheers,
> 
> JM

Yeah I started to use kwargs in some methods but it's only usefull in some 
cases imo.


I'm a pretty decent python dev imo but I know that there is still a lot that 
I've to learn so often if I get to know something knew I tend to rewrite a 
large portion of my program(s) and thus I often am too lazy to write proper 
docstrings as they would change anyway (<- very bad coding practice though ^^)

Thanks for the feedback anyways :)
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to