When is a method to long?

I know this is mainly up to the programmer to decide but what limit would you say the number of lines in a method should be?
I ask due to the response i got from an earlier piece of code i posted and since have been working to shorten one of my methods.
Should a method only be doing one thing or can it be doing many?
eg. Should a getDetails() be getting the details or should it be using inner methods that getName() and getSurname() as an example?
I am confused as I dont know whats more important more methods == more code
Longer methods are also not nice.
Regards Yucca

Yucca wrote:
I know this is mainly up to the programmer to decide but what limit would you say the number of lines in a method should be?it depends on what the requirements are
usually if a method is more than20-30 lines or whatever there's probably something that can be refactored
that said, there are times when it's necessary to write more lines than that (without the ability to refactor)
really it has nothing to do with lines, it has to do with how organized/logical the code blocks are
I ask due to the response i got from an earlier piece of code i posted and since have been working to shorten one of my methods.don't work to shorten your methods just for the sake of shortening them - that serves no purpose
but you should always be refactoring
Should a method only be doing one thing or can it be doing many?you want each method to do one thing, but that one thing might be a single transaction that needs to call 5 other methods to achieve that one thing
so group it logically - but yeah, one method per unit of work is the right approach
eg. Should a getDetails() be getting the details or should it be using inner methods that getName() and getSurname() as an example?not sure what you mean
I am confused as I dont know whats more important more methods == more codeit's technically more code but when you read it (such as when you maintain it) it's actually less code to read through
Longer methods are also not nice.refactor, refactor, refactor
Edited by: SoulTech2012 on May 15, 2008 2:37 PM

Similar Messages

  • My safari is not working. Every time i click on it says to reopen or dont reopen. i press reopen i gives me this long screen and it says reopen or press okay. when i press ok it closes the box and doesnt open. when i press reopen the long screen stay

    . Every time i click on it says to reopen or dont reopen. i press reopen i gives me this long screen and it says reopen or press okay. when i press ok it closes the box and doesnt open. when i press reopen the long screen and stays like that.

    If Safari crashes on launch and you don't have another web browser, you should be able to launch Safari by starting up in safe mode.
    You may have installed the "Genieo" or "InstallMac" ad-injection malware. Follow the instructions on this Apple Support page to remove it.
    Back up all data before making any changes.
    Besides the files listed in the linked support article, you may also need to remove this file in the same way:
    ~/Library/LaunchAgents/com.genieo.completer.ltvbit.plist
    If there are other items with a name that includes "Genieo" or "genieo" alongside any of those you find, remove them as well.
    One of the steps in the article is to remove malicious Safari extensions. Do the equivalent in the Chrome and Firefox browsers, if you use either of those.
    After removing the malware, remember to reset your home page in all the web browsers affected, if it was changed.
    If you don't find any of the files or extensions listed, or if removing them doesn't stop the ad injection, then you may have one of the other kinds of adware covered by the support article. Follow the rest of the instructions in the article.
    Make sure you don't repeat the mistake that led you to install the malware. Chances are you got it from an Internet cesspit such as "Softonic" or "CNET Download." Never visit either of those sites again. You might also have downloaded it from an ad in a page on some other site. The ad would probably have included a large green button labeled "Download" or "Download Now" in white letters. The button is designed to confuse people who intend to download something else on the same page. If you ever download a file that isn't obviously what you expected, delete it immediately.
    In the Security & Privacy pane of System Preferences, select the General tab. The radio button marked Anywhere  should not be selected. If it is, click the lock icon to unlock the settings, then select one of the other buttons. After that, don't ignore a warning that you are about to run or install an application from an unknown developer.
    Still in System Preferences, open the App Store or Software Update pane and check the box marked
              Install system data files and security updates (OS X 10.10 or later)
    or
              Download updates automatically (OS X 10.9 or earlier)
    if it's not already checked.

  • Error when generating the report (see long text), Message no. AQ_AD_HOC221

    Hi All,
    I am facing a peculiar problem while executing an infoset query.I have created 2 customized fields Compa-ratio and PIR in infotype 0008 in an infoset.I have coded in these additional fields.
    When I execute a query using 1 of these customized fields the report is generated correctly.But when I put both the fields in the output the report shows an error "Error when generating the report (see long text)". The message# associated with this errAQ_AD_HOC221.
    I have also checked the data types and the references. Nothing seems to be wrong here.
    Does anybody has any clue about this ?
    Kajal

    Hi Bernd,
    I had a look at those notes. But the information provided did'nt prove to be helpful. I found out the problem. I was using the same local variable for both the fields in their code. This generated the error. This error is a very generic one and does'nt help in finding out what exactly is the problem.
    I changed the other local variable and it started working. When I was using the same variable that time I did'nt forget to clear the values but the query still generated the error.
    Anyways thanks a lot for the reply.
    Kajal

  • Remote access my time capsule when mobile me is no longer offered? And I do NOT have a static IP?

    How can i remote access my time capsule when mobile me is no longer offered iCloud is months away and I do NOT have a static IP?
    I feel that apple has crippled the functionality of my time capsule as I can no longer access the files abroad!

    Try the advice in this thread.

  • Holding down the option key when booting my iMac lo longer shows me my bootable external drives, the system just boots up to the main system. Also, holding down command, option,P,R no longer zaps the p-ram. the system just boots up.

    Holding down the option key when booting my iMac lo longer shows me my bootable external drives, the system just boots up to the main system. Also, holding down command, option,P,R no longer zaps the p-ram. the system just boots up normally. Why do these key fonctions no longer work?

    It could be your timing if on a bluetooth keyboard.  I find it best to hit the keys as soon as i hear the chime, release and hit them again but this time holding them before the chime ends....like a fake pump in football.
    But....you can always open up system preferences, startup disk, and select your bootable clone for booting.  If it doesn't show up there, the Mac doesn't think it's bootable.

  • When query is taking too long time

    When query is taking too long time,Where and how to start tuning it?
    Here i've listed few things need to be considered,out of my knowledge and understanding
    1.What the sql is waiting for(wait events)
    2.Parameter modification need to be done at system/session level
    3.The query has to be tuned (using hints )
    4.Gathering/deleting statistics
    List out any other things that need to be taken into account?
    Which approach must be followed and on what basis that approach must be considered?

    When query is taking too long time,Where and how to start tuning it?explain plan will be good start . trace also
    Here i've listed few things need to be considered,out of my knowledge and understanding
    1.What the sql is waiting for(wait events)When Oracle executes an SQL statement, it is not constantly executing. Sometimes it has to wait for a specific event to happen befor it can proceed.
    Read
    http://www.adp-gmbh.ch/ora/tuning/event.html
    2.Parameter modification need to be done at system/session levelDepend on parameter , define parameter , trace done on session level for example
    3.The query has to be tuned (using hints )Could be help you but you must know how to use .
    4.Gathering/deleting statisticsDo it in non working hours , it will impact on database performance , but its good
    List out any other things that need to be taken into account?Which account ?
    Which approach must be followed and on what basis that approach must be considered?you could use lot of tools , Trace , AWR

  • NoSuchMethodError when call JPublisher method

    Im getting a java.lang.NoSuchMethod error when calling a method within
    a Java class generated by JPublisher.

    Hi Larry,
    thanks for the answer:
    DB Version is:
    select * from v$version:
    SQL> select * from v$version;
    BANNER
    Oracle9i Enterprise Edition Release 9.0.1.4.0 - 64bit Production
    PL/SQL Release 9.0.1.4.0 - Production
    CORE     9.0.1.2.0     Production
    TNS for IBM/AIX RISC System/6000: Version 9.0.1.4.0 - Production
    NLSRTL Version 9.0.1.4.0 - Production
    Is there a possibility to get out if intermedia is installed? I really think it is because the methods work. I can process the image - the problem is that somehow a error occurs but the the method worked. The image written to the filesystem has the correct values.
    describe ordsys.ordimage leads to the expected output:
    SQL> describe ordsys.ordimage;
    Element Type
    SOURCE ORDSYS.ORDSOURCE
    HEIGHT INTEGER
    WIDTH INTEGER
    CONTENTLENGTH INTEGER
    FILEFORMAT VARCHAR2(4000)
    CONTENTFORMAT VARCHAR2(4000)
    COMPRESSIONFORMAT VARCHAR2(4000)
    MIMETYPE VARCHAR2(4000)
    INIT FUNCTION
    COPY PROCEDURE
    PROCESS PROCEDURE
    PROCESSCOPY PROCEDURE
    SETPROPERTIES PROCEDURE
    CHECKPROPERTIES FUNCTION
    GETHEIGHT FUNCTION
    GETWIDTH FUNCTION
    GETFILEFORMAT FUNCTION
    GETCONTENTFORMAT FUNCTION
    GETCOMPRESSIONFORMAT FUNCTION
    SETLOCAL PROCEDURE
    CLEARLOCAL PROCEDURE
    ISLOCAL FUNCTION
    GETUPDATETIME FUNCTION
    SETUPDATETIME PROCEDURE
    GETMIMETYPE FUNCTION
    SETMIMETYPE PROCEDURE
    GETCONTENTLENGTH FUNCTION
    GETCONTENT FUNCTION
    GETBFILE FUNCTION
    DELETECONTENT PROCEDURE
    SETSOURCE PROCEDURE
    GETSOURCE FUNCTION
    GETSOURCETYPE FUNCTION
    GETSOURCELOCATION FUNCTION
    GETSOURCENAME FUNCTION
    IMPORT PROCEDURE
    IMPORTFROM PROCEDURE
    EXPORT PROCEDURE
    PROCESSSOURCECOMMAND FUNCTION
    OPENSOURCE FUNCTION
    CLOSESOURCE FUNCTION
    TRIMSOURCE FUNCTION
    READFROMSOURCE PROCEDURE
    WRITETOSOURCE PROCEDURE
    MIGRATEFROMORDIMGB PROCEDURE
    MIGRATEFROMORDIMGF PROCEDURE
    GETPROPERTIES PROCEDURE
    I do not want to use a database link. everything is stored in that one database. I really have no clue why plsql thinks I want to.
    Regards,
    Markus

  • Error when using findbykey method

    hi am having this error when using below method cannot assign of type sms1405.common.agrROW TO variable of type oracle.jbo.row[]. type 'oracle.jbo.row[]' excepected but 'sms1405.common.agRROW' found the error is in this line agrRows = (AGRRow)agrRows[0]; the methos is
    am using this sample
    http://amulyamishras-tech-blog.blogspot.com/2011/01/viewobject-getrow-vs-findbykey.html
    where does EmpVORow in EmpVORow empRow =
    (EmpVORow)EmpVO.getRow(key); define from above sample
    where does EmpVO from EmpVORow empRow =
    (EmpVORow)EmpVO.getRow(key); define from above sample
    am in Jdeveloper 11.1.2.1.0
    Edited by: Tshifhiwa on 2012/07/03 4:36 PM

    Man, you should be able to find this out your self by now!
    Hint: there is one 's' too much in the line you get the error (i guess cut & past error)
    Try to understand the code you copied!
    Timo

  • Error when sending message: Method not implemented

    Hi, All:
    We have newly setup system and when we test sending test message from RWB, (RWB-Component Monitoring-Integration Engine-Test Tab), we got following error:
    "Error when sending message: Method not implemented", I know this is related to post configuration issue, I just know someone has come cross the situation and how it was resolved.
    Thanks
    Liang

    HI Liang
    Yes it looks like post installation problem. I have not come across this but i think you should check with the RFC created for IE while installation. To connect IE & AE and even the exchange profile if something is missing
    Thanks
    Gaurav

  • HT204088 i have balance in my account when my payment method decline

    i have balance in my account when my payment method was decline

    If you have a credit card on your account (I don't think that debit cards are still accepted), whether or not you have a balance on your account, then it needs to be registered to exactly the same name and address (including format and spacing etc) that you have on your iTunes account, be issued by a bank in your country and you need to be in that country - otherwise you may get the 'declined' message. If you can't see anything wrong with the card details, and you've checked with the card issuer in case it's them that are declining it, then you could try contacting iTunes support and see if they know why it's being declined : http://www.apple.com/support/itunes/contact/ - click on Contact iTunes Store Support on the right-hand side of the page

  • Changing exception clause in method signature when overwriting a method

    Hi,
    I stumbled upon a situation by accident and am not really clear on the details surrounding it. A short description:
    Say there is some API with interfaces Foo and Bar as follows:
    public interface Foo {
       void test() throws Exception;
    public interface Bar extends Foo {
       void test();
    }Now, I find it strange that method test() for interface Bar does not need to define Exception in its throws clause. When I first started with Java I was using Java 1.4.2; I now use Java 1.6. I cannot remember ever reading about this before and I have been unable to find an explanation or tutorial on how (or why) this works.
    Consider a more practical example:
    Say there is an API that uses RMI and defines interfaces as follwows:
    public interface RemoteHelper extends Remote {
       public Object select(int uid) throws RemoteException;
    public interface LocalHelper extends RemoteHelper {
       public Object select(int uid);
    }As per the RMI spec every method defined in a Remote interface must define RemoteException in its throws clause. The LocalHelper cannot be exported remotely (this will fail at runtime due to select() in LocalHelper not having RemoteException in its clause if I remember correctly).
    However, an implementing class for LocalHelper could represent a wrapper class for RemoteHelper, like this:
    public class Helper implements LocalHelper {
       private final RemoteHelper helper;
       public Helper(RemoteHelper helper) {
          this.helper = helper;
       public Object select(int id) {
          try {
             return (this.helper.select(id));
          } catch(RemoteException e) {
             // invoke app failure mechanism
    }This can uncouple an app from RMI dependancy. In more practical words: consider a webapp that contains two Servlets: a "startup" servlet and an "invocation" servlet. The startup servlet does nothing (always returns Method Not Allowed, default behaviour of HttpServlet), except locate an RMI Registry upon startup and look up some object bound to it. It can then make this object accessible to other classes through whatever means (i.e. a singleton Engine class).
    The invocation servlet does nothing upon startup, but simply calls some method on the previously acquired remote object. However, the invocation servlet does not need to know that the object is remote. Therefore, if the startup servlet wraps the remote object in another object (using the idea described before) then the invocation servlet is effectively removed from the RMI dependancy. The wrapper class can invoke some sort of failure mechanism upon the singleton engine (i.e. removing the remote object from memory) and optionally throw some other (optionally checked) exception (i.e. IllegalStateException) to the invocation servlet.
    In this way, the invocation servlet is not bound to RMI, there can be a single point where RemoteExceptions are handled and an unchecked exception (i.e. IllegalStateException) can be handled by the Servlet API through an exception error page, displaying a "Service Unavailable" message.
    Sorry for all this extensive text; I just typed out some thoughts. In short, my question is how and why can the throws clause change when overwriting a method? It's nothing I need though, except for the clarity (e.g. is this a bad practice to do?) and was more of an observation than a question.
    PS: Unless I'm mistaken, this is basically called the "Adapter" or "Bridge" (not sure which one it is) pattern (or a close adaptation to it) right (where one class is written to provide access to another class where the method signature is different)?
    Thanks for reading,
    Yuthura

    Yuthura wrote:
    I know it may throw any checked exception, but I'm pretty certain that an interface that extends java.rmi.Remote must include at least java.rmi.RemoteException in its throws clause (unless the spec has changed in Java 1.5/1.6).No.
    A method can always throw fewer exceptions than the one it's overriding. RMI has nothing to do with it.
    See Deitel & Deilte Advanced Java 2 Platform How To Program, 1st Ed. (ISBN 0-13-089650-1), page 793 (sorry, I couldn't find the RMI spec quick enough). Quote: "Each method in a Remote interface must have a throws clause that indicates that the method can throw RemoteException".Which means that there's always a possibility of RemoteException being thrown. That's a different issue. It's not becusae the parent class can throw RE. Rather, it's because some step that will always be followed is declared to throw RE.
    I later also noticed I could not add other checked exceptions, which made sense indeed. Your explanation made perfect sense now that I heard (read) it. But just to humour my curousity, has this always been possible? Yes, Java has always worked that way.
    PS: The overwriting/-riding was a grammatical typo (English is not my native language), but I meant to say what you said.No problem. Minor detail. It's a common mistake, but I always try to encourage proper terminology.

  • HT201412 what do you do when your phone numbers no longer have the contact persons name just a number. Also names are missing from the address  book where contacts are.

    what do you do when your phone numbers no longer have the contact persons name just a number. Also names are missing from the address  book where contacts are.

    I, too, love everything about my phone. The other day I tried to crash my Z10 by running multiple apps and having videos running in the background. Do you think my Z10 showed any signs of slowing down? Nothing doing! It ran as smooth as silk. I'm very impressed.
    Cheers.
    - If my response has helped you, please click "Options" beside my post and mark it as solved. Clicking the "thumbs up" icon near the bottom of my response would also be appreciated.

  • Crash when using Invoke Method: Library:Deploy Library

    I'm trying to set a library of shared variables to deploy when a VI runs. When using the method to deploy a library, Labview will crash with no error log. I am able to use Library.Open to, for example, HiliteInProjectWindow, and Library.GetFileLVVsersion (8.6). But for the life of me I cannot get deploy to work. Any ideas?

    hbcnb,
    I'm not quite sure why that is happening, but I
    can give you a work around for it.  There is a property node that
    returns the mode that LabVIEW is running in (Run-Time, Development,
    Evaluation).  If you output this value to a case structure, you can
    include your deploy code in the run-time version but not in your
    development version so that it will cease to crash.  Place down the
    property node, then select  Application » Kind.  I've included a
    picture of how to wire this up. Let me know if this helps work around
    the problem a bit easier.  
    Sincerely,
    Chris G in AE
    Attachments:
    application_pic.jpg ‏27 KB

  • When a static method is accessed concurrently

    When a static method is accessed by many objects symultaneously(concurrently),
    What is happened in the static method.
    Are the stacks for that method maded seperately and
    each stack doesn't influence other stacks?
    thank you in advance.

    The static objects or methods concept is clear, one
    instance for all objects.No. One instance for the class.
    , and every
    one know that, static methods is slower than
    nonstatic, Since when? I've certainly never heard that before... Do you have a reference I can look at?
    and this is as i thought because static
    methods are syncronized by default.Absoloutely not!
    All synchronization locks on an object. When you synchronize an instance method, it locks on the implicit "this"; When you synchronize a static method, it locks on the class's associated Class object.
    So two synchronized static methods in the same class can not be called at the same time, but synchronized instance methods that access static variables can all access those variables at the same time and potentially cause threading problems. In this situation you can declare the static fields volatile or wrap synchronized blocks around all code that accesses them, and synchronize on the same object (perhaps the Class object associated with the current class would be appropriate, but that reallt depends on the rest of your design).

  • [svn:fx-trunk] 10891: Fix for ASDoc throws error when using getter methods for pseudo-inheritance of static constants

    Revision: 10891
    Author:   [email protected]
    Date:     2009-10-06 09:46:47 -0700 (Tue, 06 Oct 2009)
    Log Message:
    Fix for ASDoc throws error when using getter methods for pseudo-inheritance of static constants
    QE notes: None.
    Doc notes: None
    Bugs: SDK-22676
    Tests run: checkintests
    Is noteworthy for integration: No
    Ticket Links:
        http://bugs.adobe.com/jira/browse/SDK-22676
    Modified Paths:
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/asdoc/AsDocUtil.java

    Have you tried using com.adobe.air.crypto.EncryptionKeyGenerator instead?

Maybe you are looking for